本项目是基于宇树Unitree G1 人形机器人二次开发的,实现3D SLAM建图,2D导航、语音交互和运动控制集成,可用于语音导览讲解机器人。
项目核心内容:
- 基于FAST-LIO2的3D激光里程计与建图
- 基于双重ICP的重定位
- 2D栅格地图导航(A*+TEB)
- 集成Unitree SDK,可调用多个内置动作和舞蹈
- 集成语音助手,支持大模型的问答
- ubuntu20.04(ROS noetic)
- 依赖库 Eigen,PCL,Open3d Livox-SDK2,Unitree_SDK2_python
git clone https://github.com/binbin2002/Unitree_G1_Navigation.git
cd Unitree_G1_Navigation
git submodule update --init --recursive-
安装依赖包
sudo apt install ros-noetic-local-planner ros-noetic-global-planner ros-noetic-costmap-server
-
安装 Livox SDK2
sudo apt install cmake
git clone https://github.com/Livox-SDK/Livox-SDK2.git cd ./Livox-SDK2/ mkdir build cd build cmake .. && make -j sudo make install
- 更改雷达ip及地图保存路径
根据本机IP和雷达IP地址,修改为对应ip
# 修改本机与雷达ip cd /G1Nav2D/src/livox_ros_driver2-master/config/ gedit MID360_config.json
"host_net_info" : { "cmd_data_ip" : "192.168.123.222", "cmd_data_port": 56101, "push_msg_ip": "192.168.123.222", "push_msg_port": 56201, "point_data_ip": "192.168.123.222", "point_data_port": 56301, "imu_data_ip" : "192.168.123.222", "imu_data_port": 56401, "log_data_ip" : "", "log_data_port": 56501 } }, "lidar_configs" : [ { "ip" : "192.168.123.120", "pcl_data_type" : 1, "pattern_mode" : 0, "extrinsic_parameter" : { "roll": 3.1415, "pitch": 0.0, "yaw": 0.0, "x": 0, "y": 0, "z": 0 }
#修改地图保存路径,将该文件下最底部路径改为自己的电脑 cd G1Nav2D/src/fastlio2/src/ gedit map_builder_node.cpp
cd G1Nav2D/
catkin_make
#遇到报错可先执行以下命令
cd G1Nav2D/livox_ros_driver2-master/
./build.sh ROS1
cd /G1Nav2D/
catkin_make-
建图
# 建图 cd G1Nav2D/ source devel/setup.bash roslaunch fastlio mapping.launch # 打开新终端 cd G1Nav2D/ source devel/setup.bash # 保存地图,自定义路径及地图名称 rosrun map_server map_saver map:=/projected_map -f /home/nvidia/mymap
-
编辑地图
# 打开地图,利用Map Eraser Tool修改地图,ctrl+加号或减号可修改画笔大小,保存地图 source devel/setup.bash roslaunch ros_map_edit map_edit.lunch
-启动导航
#修改地图路径
cd HongTu/G1Nav2D/fastlio2/config/
gedit gridmap_load.launch
# 启动导航,启动导航后需自行按照雷达位置重定位
cd HongTu/G1Nav2D/
source devel/setup.bash
roslaunch fastlio navigation.launch- 启动运控
安装unitree_sdk2_python参考宇树官方文档# 打开新终端,网口可通过ifconfig命令查询自行更改 cd HongTu/unitee_sdk2_python/example/g1/high_level/ python3 g1_control.py 网口
在rviz中发布目标点即可自主导航
# 开始建图
source devel/setup.bash
roslaunch fastlio mapping.launch- 3d建图————运行重构的fastlio2,保存pcd点云文件
- 2d建图————修改octomap_server.launch的max_Z min_Z,得到2d栅格地图
#保存地图
rosrun map_server map_saver map:/projected_map -f /home/nvidia/map- 3d地图编辑————通过cloudcompare直接编辑,降采样、移除离群点
- 2d地图编辑————使用ros_map_edit功能包
# 打开地图,利用Map Eraser Tool修改地图,ctrl+加号或减号可修改画笔大小,保存地图
source devel/setup.bash
roslaunch ros_map_edit map_edit.lunch需要确保3d地图和2d地图一致。可以通过pcd2pgm功能包(https://github.com/Hinson-A/pcd2pgm_package)
# 1.启动导航
source devel/setup.bash
roslaunch fastlio navigation.launch
# 2.rviz手动重定位
# 3.rviz给定目标点导航(调节move_base参数)#结合语音播放
python3 point1.pycd HongTu/unitee_sdk2_python/example/g1/high_level/
python3 g1_control.py enp3s0本项目是在Hongtu基础上完善的,添加了自己在实机部署过程中遇到的一些problem和理解。 感谢上述所有开源项目贡献者。
本项目仅供学习交流,请遵守相关开源协议。