ubuntu 22.04安装ros2及nav2测试
安装ros2
参考鱼香ROS安装教程
// 换源,编辑/etc/apt/sources.list文件, 删除原有内容,将以下内容加入
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
// 更新
sudo apt-get update
sudo apt-get upgrade
// 添加源
echo "deb [arch=$(dpkg --print-architecture)] https://repo.huaweicloud.com/ros2/ubuntu/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
// 添加源对应的秘钥
sudo apt install curl gnupg2 -y
curl -s https://gitee.com/ohhuo/rosdistro/raw/master/ros.asc | sudo apt-key add -
// 更新
sudo apt update
// 安装ROS2,上面步骤完成后,安装就变得非常的简单了,一行指令搞定;
sudo apt install ros-humble-desktop
// 安装额外依赖
sudo apt install python3-argcomplete -y
// 添加环境变量
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
// 补全colcon命令
echo "source /usr/share/colcon_argcomplete/hook/colcon-argcomplete.bash" >> ~/.bashrc
安装Nav2
// 安装turtlebot3-gazebo
sudo apt install ros-humble-turtlebot3-gazebo
// 源码编译安装nav2
mkdir -p ~/nav2_ws/src
cd ~/nav2_ws/src
git clone https://github.com/ros-planning/navigation2.git -b humble
cd ..
// rosdepc install -r --from-paths src --ignore-src --rosdistro humble -y
// 自动安装依赖好像有点问题,采用手动安装的方式
sudo apt-get install ros-humble-bondcpp ros-humble-test-msgs ros-humble-behaviortree-cpp-v3 ros-humble-diagnostic-updater ros-humble-ompl
source ~/.bashrc
colcon build --symlink-install
echo "source ~/nav2_ws/install/setup.bash" >> ~/.bashrc
source ~/.bashrc
ros2 launch nav2_bringup tb3_simulation_launch.py headless:=False
// ps: 卸载ros2
sudo apt remove ros-humble-*
sudo apt autoremove
点击给出初始定位
然后就可以使用进行导航了。
nav2仿真建图测试
sudo apt-get install ros-humble-turtlebot3-teleop
// 启动仿真环境
ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py
// 启动nav2
ros2 launch nav2_bringup rviz_launch.py
// 启动SLAM
ros2 launch slam_toolbox online_async_launch.py
// 启动turtlebot3键盘控制节点
ros2 run turtlebot3_teleop teleop_keyboard
// 保存地图到home目录下
ros2 run nav2_map_server map_saver_cli -f ~/map
自定义地图测试
修改nav2_bringup功能包下tb3_simulation_launch.py
文件的以下内容,地图文件位置/home/ubuntu/maps/house.yaml
,加载turtlebot3_house仿真环境
declare_map_yaml_cmd = DeclareLaunchArgument(
'map',
default_value='/home/ubuntu/maps/house.yaml',
# default_value=os.path.join(
# bringup_dir, 'maps', 'turtlebot3_world.yaml'),
description='Full path to map file to load')
declare_world_cmd = DeclareLaunchArgument(
'world',
# TODO(orduno) Switch back once ROS argument passing has been fixed upstream
# https://github.com/ROBOTIS-GIT/turtlebot3_simulations/issues/91
# default_value=os.path.join(get_package_share_directory('turtlebot3_gazebo'),
# worlds/turtlebot3_worlds/waffle.model')
# default_value=os.path.join(bringup_dir, 'worlds', 'world_only.model'),
default_value=os.path.join(get_package_share_directory('turtlebot3_gazebo'),
'worlds',
'turtlebot3_house.world'),
description='Full path to world model file to load')
参照ros2 launch nav2_bringup tb3_simulation_launch.py headless:=False
即可进行测试