设置语言环境
确保你的语言环境能支持UTF-8
。如果你使用的是minimal environment,比如docker的容器,那语言环境可能是类似POSIX
之类的。我们需要进行下面的测试。但是,如果你正在使用另外一种支持UTF-8的语言,应该也是可以的。
locale # check for UTF-8
sudo apt update && sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8
locale # verify settings
设置源
将ROS2 apt仓库添加到你的系统,具体做法为:
sudo apt install software-properties-common
sudo add-apt-repository universe
添加ROS2安装包源信息:
sudo apt update && sudo apt install curl
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
更新系统source.list:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
安装ROS2的包
更新apt repository。
sudo apt update
升级系统已经安装的packages。
sudo apt upgrade
推荐安装桌面版本: ROS, RViz, demos, tutorials。
sudo apt install ros-foxy-desktop
环境设置
通过sourcing下面的文件设置环境:
source /opt/ros/foxy/setup.bash
安装参数补全
ROS2 命令行工具使用argcomplete进行自动补全。所以,如果你想进行自动补全,需要安装argcomplete。
sudo apt install -y python3-argcomplete
测试例子
在一个终端A中,source了设置文件之后,运行一个c++的发布消息的应用。
source /opt/ros/foxy/setup.bash
ros2 run demo_nodes_cpp talker
在另外一个终端B中,source了设置文件之后,运行一Python的接收消息的应用。
source /opt/ros/foxy/setup.bash
ros2 run demo_nodes_py listener
这样就可以看到talker正在发布消息,同时listener打印收到的消息。这个可以验证C++和Python APIs都可以正常工作。
运行结果如下:
终端A
neardi@LPA3588:~$ ros2 run demo_nodes_cpp talker
[INFO] [1672131270.256481314] [talker]: Publishing: 'Hello World: 1'
[INFO] [1672131271.256501645] [talker]: Publishing: 'Hello World: 2'
[INFO] [1672131272.256387812] [talker]: Publishing: 'Hello World: 3'
[INFO] [1672131273.256458682] [talker]: Publishing: 'Hello World: 4'
[INFO] [1672131274.256557592] [talker]: Publishing: 'Hello World: 5'
[INFO] [1672131275.256358218] [talker]: Publishing: 'Hello World: 6'
终端B
neardi@LPA3588:~$ ros2 run demo_nodes_py listener
[INFO] [1672131270.308648992] [listener]: I heard: [Hello World: 1]
[INFO] [1672131271.259757148] [listener]: I heard: [Hello World: 2]
[INFO] [1672131272.259962390] [listener]: I heard: [Hello World: 3]
[INFO] [1672131273.259896764] [listener]: I heard: [Hello World: 4]
[INFO] [1672131274.260288792] [listener]: I heard: [Hello World: 5]
[INFO] [1672131275.262437902] [listener]: I heard: [Hello World: 6]