【测评】科沃斯八界机器人试用、深度开发测评
一起来加入八界开源生态吧八界开源社区www.ecovacs-tech.com0、目录1、简介外观功能2、试用2.1 触摸屏操作2.2 PC端体验3、SDK测试3.1 环境搭建3.2 上位机开发3.3 接口介绍4、ROS2测试4.1 连接WiFi4.2 配置CycloneDDS4.2.1 机器人端配置4.2.2 PC机端配置4.3 查看节点、话题等5、测评小结5.1 优点5.2 不足1、简介非常荣幸作为KOL来试用和开发测评科沃斯八界机器人并同时参与了《科沃斯八界开源共享大赛》大赛链接https://builderx.csdn.net/activity-site/ecovacs/home八界机器人实物照片如下先简单介绍下外观功能底盘底盘和扫地机器人相似但是没有扫地功能只是一个运动底盘要是以后能加上扫地功能就完美了底盘前面有防撞梁、激光雷达用来避障底盘轮子是静音的运动起来比激光雷达的声音都小底盘后面有红外传感器用来在自动充电时引导对准充电桩底盘下面还有充电接触点、防止从高处坠落的传感器等。身体身体可以升降升降范围在0.851.29米之间中间有块7寸触摸屏主要功能都可以在触摸屏上操作操作简单犬子10岁可以独立完成建图、检测、导航等功能头部RGBD相机、补光灯抬升时防止碰撞的光耦;语音模块可以识别声纹。手臂六自由度机械臂二指夹爪RGBD相机、补光灯在手臂根部还有一个UV除菌盒子复位时夹爪可以进去消毒。2、试用八界机器人的使用非常简单老人小孩皆可操作。本人主要从开发者角度体验、测评SDK因此这部分只简单介绍下使用步骤。2.1 触摸屏操作八界机器人七寸触摸屏上可以直观的看到主要功能体验步骤如下一键检测第一次使用建议先运行一键检测检测所有硬件是否正常开始建图根据提示将机器人放到充电桩从充电桩开始自动建图建图过程非常顺利、执行速度也很快地图信息在机器人屏幕上就能看到所建地图非常直观、便捷不需要手机、电脑对老人小孩很友善玩具收纳八界机器人默认自带的一个场景任务它会观测周围是否玩具并将玩具放到收纳框中成功率很高也较为实用的一个功能回充可以实现全天候待机工作人机对话需要联网、购买Token、配置好key后才能使用本人体验时默认自带了千问模型qwen3.7-max2.2 PC端体验在PC端浏览器中输入触摸屏上显示的地址可以进入可视化平台上下面介绍几个亮点OpenClaw通过龙虾可以实现很多功能比如对话、控制机器人动作、AI编程实现任务编排功能非常强大语义地图自动建图后可以通过语义地图修改地图、在地图上绘制操作区域、添加家具等等机器人控制单独控制机器人的各个执行机构3、SDK测试3.1 环境搭建1系统环境x86_64平台Ubuntu22.04 操作系统Qt版本6.2gcc版本11.4.0或者Ubuntu24.04操作系统Qt版本6.9gcc版本13.32SDK下载SDK下载地址https://atomgit.com/ecovacs-bajie/bajie_sdk进入下载的 bajie_sdk 目录中可以到看python和cpp两个主要的文件夹tree-L1.├── CONTRIBUTING.md ├── cpp ├── img ├── LICENSE ├── NOTICE ├── pyproject.toml ├── python ├── README.md └── requirements-dev.txt4directories,6filesSDK支持Python和C本人略懂些C因此先使用C接口的SDK并用Qt实现界面完成对SDK的测试和任务编排3SDK 示例编译进入 bajie_sdk/cpp 目录cd bajie_sdk/cpp创建编译目录mkdir build进入编译目录cd build使用cmake编译cmake …编译make -j4生成示例的目录bajie_sdk/cpp/out/x86lsbajie_sdk/cpp/out/x86 delivery_demo desk_demo librobot_sdk.so librobot_sdk.so.3 librobot_sdk.so.3.0.0 toy_storage_demo4使用SDK可以将SDK中头文件和库文件拷贝到自定义的项目中在项目中链接头文件目录和动态库头文件和动态库在SDK的 bajie_sdk/cpp/depend 目录下支持arm64和x86_64cdbajie_sdk/cpp/depend tree-L3.├── include │ └── robot_sdk │ ├── client.h │ ├── desk_intent.h │ ├── export.h │ ├── img_match.h │ ├── location.h │ ├── math_utils.h │ ├── ovd.h │ ├── pose_tools.h │ ├── put_where.h │ ├── robot_func.h │ ├── robot_info.h │ ├── robot_sdk.h │ ├── shoes_intent.h │ └── types.h └── lib ├── arm │ ├── cmake │ ├── librobot_sdk.so -librobot_sdk.so.3 │ ├── librobot_sdk.so.3 -librobot_sdk.so.3.0.0 │ └── librobot_sdk.so.3.0.0 └── x86 ├── cmake ├── librobot_sdk.so -librobot_sdk.so.3 ├── librobot_sdk.so.3 -librobot_sdk.so.3.0.0 └── librobot_sdk.so.3.0.08directories,20files3.2 上位机开发1说明本人使用CSDK开发的上位机主界面如下下面介绍实现的功能完整源码已上传到atomgit地址如下https://atomgit.com/u010168781/ecovacs-bajie-csdn.git2克隆下载git clone https://atomgit.com/u010168781/ecovacs-bajie-csdn.git3编译运行colcon build source install/local_setup.bash ros2 run robot_app robot_app4界面介绍注意使用 Ubuntu24.04 Qt6.9 默认是深色主题使用 Ubuntu22.04 Qt6.2 默认是浅色主题5实现的功能列表连接、断开通过websocket格式url连接到机器人IP可以从机器人屏幕上看到端口号是9900格式如ws://192.168.11.110:9900图像采集八界机器人中没有视频服务器无法获取视频流可以通过SDK定时获取获取头部、手部RGB图片和深度数据然后将深度数据转为伪色彩显示需要注意的是在充电时手部的图像会获取失败需要执行“下桩”操作后才可以获取机器人状态查询只显示了电池电量、实时位置其它信息未解析机器人运动控制前、后、左、右、停止注意控制运动时没有激光雷达避障碰到防撞梁后会执着的抽搐尤其需要注意的是向后运行时没有任何避障功能停止功能除了停止运动也可以停止所有任务机械臂预设控制复位、伸出、维护姿态、夹爪打开、夹爪关闭默认机械臂只有三个固定、预设的位姿机械臂位姿控制通过设定坐标系、三位坐标、姿势使机械臂运动到指定位姿尝试了几组数据未能成功需要深入了解坐标转换关系和空间坐标以及可以运动的范围这个接口不够友好。本来设想的一些场景都因为机械臂无法任意操作卡在这里身体控制上升、下降、抬头、低头可以设置一次运行的距离或角度导航定点导航可以参考机器人状态中的实时位置输入绝对坐标导航到指定位置语义导航可以导航到提前设置好的区域、家具附近等在场景任务中调用非常友好建图与重定位自动建图一键建图需要注意的时建图前要将机器人拖到充电位置每次建图都是从充电桩开始重定位当机器人开机时如果没有在充电桩需要执行重定位语义建图测试未成功可以在Web控制台中操作语义建图设置区域名、家具尺寸位置等语音播报文本转语音功能八界机器人不能播放预制的音频文件比如MP3但是可以使用文本转语音播放注意播放时不要执行其它命令否则会终止播放最好执行sleep等待播放完毕场景任务玩具收纳测试成功将玩具放入收纳框中这是SDK中自带的demo集成到程序中了玩具配送测试成功将起始点的玩具配送到目的点这是SDK中自带的demo桌面整理未测试成功可能桌面太整洁了不需要整理 ^ v ^这是SDK中自带的demo测试了几次都没有复现不知道桌子上要摆设成什么样才会执行鞋子整理测试成功会将指定区域中的鞋子整理到边上摆好这是SDK中自带的demo递水任务创新实现 这是本人新开发的场景将客厅-书桌上的水杯拿起运送到卧室-茶几上水杯识别成功率较高但是在夹水杯时会有失败的概率有时不是夹住把手而是水杯壁如果刚整理好鞋子就尴尬了夹爪每次都是从上往下夹并不是想象中的从水平位置夹住放水杯时失败的概率很大机械臂不知道怎么规划路径可能是茶几小、周围有干涉搞笑的是放置水杯时大概率会调整角度手臂姿势调整过程中水杯会来回翻转如果有水肯定就洒干净了感知接口测试 将以上场景中未使用到的接口放到此处可以单独测试3.3 接口介绍下面介绍SDK中的部分接口调用过程还是非常简单的C接口有两大类同步接口和异步接口异步接口函数名以Async结尾可以设置回调函数。1获取默认URL如果在系统环境中设置了环境变量 ECO_ROBOT_HOST 将机器人的IP赋值给变量调用这个接口可以从预设的环境变量中获取IPsetenv(ECO_ROBOT_HOST, 192.168.11.110, 1); const std::string url robot_sdk::eco_GetDefaultLinkUrl();2连接可以使用上面获取的url或者直接输入如下格式的urlrobot_sdk::Client::GetInstance().Connect(“ws://192.168.11.105:9900”)3设置身体高度一般在第一次连接时将高度归零标定初始位置robot_sdk::RobotHeightCtrlData heightData; heightData.value 0.0f; robot_sdk::ErrorCode ec robot_sdk::eco_RobotHeightCtrl(heightData, 60000);4设置头部角度一般在第一次连接时将头部归零标定初始位置robot_sdk::RobotHeadCtrlData headData; headData.value 0.0f; robot_sdk::ErrorCode ec robot_sdk::eco_RobotHeadCtrl(headData, 60000);5停止所有任务包括前后左右运动也包括其它长任务robot_sdk::ErrorCode ec robot_sdk::eco_StopAll(10000);6前后左右运动以前进、左转为例robot_sdk::ChassisMoveData data; data.move_distance 0.2; // 单位米 data.move_angle angle; // 单位弧度 robot_sdk::ErrorCode ec robot_sdk::eco_ChassisMove(data, 30000);7语音播报直接传入字符串即可建议在播放后sleep一段时间等待播放完毕否则在执行其它任务时会打断播放robot_sdk::ErrorCode ec robot_sdk::eco_Speech(“您好我是八界”); sleep(1);8回充示例中使用了异步接口以Async结尾std::string taskId; robot_sdk::ErrorCode ec robot_sdk::eco_RechargeAsync(taskId, [回调函数], 180000);9定点导航robot_sdk::PointNavigationData nav; nav.x 1; nav.y 1; nav.yaw 0; std::string taskId; robot_sdk::ErrorCode ec robot_sdk::eco_PointNavigationAsync(nav, taskId, [回调函数], 180000);10SDK接口的调用流程较统一和简单流程是先填充一个结构体然后将 结构体 和 超时时间 作为参数传递给接口函数判断返回值是否成功其它接口使用方法参加官方说明和本人上传的完整示例源码。4、ROS2测试如果想PC和机器人通过ROS通信需要执行如下操作4.1 连接WiFi八界机器人中的主控由两块RK3588组成在机器人触摸屏上配置的WiFi应该是其中块RK3588这块主控不含ROS节点和消息先登录这块主控的Web界面即八戒触摸屏上提示的IP如http://192.168.11.110:17890/等开发平台在开发平台上的“设备与业务配置”–“运动控制WiFi”界面中再次配置WiFi连接成功可以看到第二块RK3588的IP。可以使用ssh远程登录端口号、用户名、密码可以向科沃斯技术支持获取4.2 配置CycloneDDSROS2默认中间件RMW是Fast DDS即rmw_fastrtps_cpp八界机器人中配置为 CycloneDDS因此需要执行如下配置才能通信4.2.1 机器人端配置修改 /home/Agi/install/agi.sh 文件在 init_env() 函数头四行位置添加source /opt/ros/humble/setup.bash export ROS_DOMAIN_ID$(cat /factory/DomainID) export RMW_IMPLEMENTATIONrmw_cyclonedds_cpp export CYCLONEDDS_URIfile:///factory/wlan0.xml即ROS2域IDROS_DOMAIN_ID 16ROS2底层DDS为rmw_cyclonedds_cppwlan0.xml 内容如下CycloneDDSxmlnshttps://cdds.io/configDomainidanyGeneralInterfacesNetworkInterfacenamelomulticasttrue/NetworkInterfacenamewlan0multicasttrue//InterfacesAllowMulticastdefault/AllowMulticast/GeneralDiscoveryParticipantIndexauto/ParticipantIndexMaxAutoParticipantIndex100/MaxAutoParticipantIndex/Discovery/Domain/CycloneDDS修改完成后重启机器人。4.2.2 PC机端配置1编辑 default.xmldefault.xml的内容如下要确保 NetworkInterface 的网卡存在并且有IP根据个人环境修改 NetworkInterface 字段CycloneDDSxmlnshttps://cdds.io/configDomainidanyGeneralInterfacesNetworkInterfacenamelomulticasttrue/NetworkInterfacenamewlp3s0multicasttrue//InterfacesAllowMulticastdefault/AllowMulticast/GeneralDiscoveryParticipantIndexauto/ParticipantIndexMaxAutoParticipantIndex100/MaxAutoParticipantIndex/Discovery/Domain/CycloneDDS2在终端中执行source /opt/ros/humble/setup.bash export ROS_DOMAIN_ID16 export RMW_IMPLEMENTATIONrmw_cyclonedds_cpp export CYCLONEDDS_URIfile:///home/laoer/default.xml3可以使用如下命令查看环境变量是否设置成功echo $ROS_DOMAIN_ID echo $RMW_IMPLEMENTATION echo $CYCLONEDDS_URI4重启ros2 daemonros2 daemon stop ros2 daemon start4.3 查看节点、话题等可以在PC的终端上执行ROS2命令来查看1节点列表部分执行命令ros2 node listros2nodelist /agent …… /nav2_area_navi_points /planner_server /transform_listener_impl_5570b0ebe8 /velocity_smoother /waypoint_follower2查看话题执行命令ros2 topic listros2 topic list /actuator/awe_dancing /actuator/awe_sayHello /actuator/led/ctrl /actuator/led/ctrl/state /actuator/led/status ……3查看服务执行命令ros2 service listros2servicelist /actuator/motor/driver/enable_srv /actuator/motor/driver/set_suspension_lock /alarm/srv /alarm_manager_listener/describe_parameters /alarm_manager_listener/get_parameter_types ……5、测评小结5.1 优点1开箱体验包装方式便捷从侧面就能打开2建图执行操作简单语义建图是亮点3抓取动作精准抓取是个亮点超出预期4操作简单可以在触摸屏上完成整体体验操作简单小孩也可以独自完成5SDK文档本人使用C接口测试接口说明文档很详细调用步骤简洁5.2 不足1一键检测一开始没找到一键检测的按钮以为刷新按钮是需要向下滑动才看到2语音交互唤醒词不能修改唤醒后应答词有点长、且不够友好不能连续交流3机械臂操作需要使用frame_id和坐标参数值不知道怎么设置任意位姿没有测试成功使用起来有难度影响任务设计和执行4开源能力应该称为二次开发能力不涉及开源本来想尝试使用ROS2接口开发担心机器臂会打伤本体放弃了5补光灯不能手动开启在较暗环境中没有自动开启影响图像识别尤其是人脸识别功能