乌班图ros
时间: 2025-05-01 14:39:10 浏览: 52
### Ubuntu上ROS安装与配置指南
#### ROS Melodic (适用于Ubuntu 18.04)
对于运行在Ubuntu 18.04上的ROS版本Melodic,其安装过程可以分为以下几个方面:
设置源列表并更新包索引:
```bash
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
```
添加密钥以便验证软件包的真实性[^1]:
```bash
sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
```
执行APT更新命令以获取最新的包信息:
```bash
sudo apt update
```
安装桌面完全版(Desktop-Full Install),这包含了几乎所有的工具和库文件:
```bash
sudo apt install ros-melodic-desktop-full
```
初始化 `rosdep` 工具用于解决依赖关系:
```bash
sudo rosdep init
rosdep update
```
环境变量的设定可以通过修改 `.bashrc` 文件来完成。这样每次打开终端都会自动加载这些变量:
```bash
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
```
最后确认安装成功以及查看当前使用的ROS版本号:
```bash
rosversion -d
```
#### ROS Galactic (适用于Ubuntu 20.04)
针对较新的操作系统如Ubuntu 20.04,则应考虑使用ROS Galactic Geochelone作为目标版本。
同样先建立正确的仓库地址,并导入官方GPG key确保安全性[^2]:
```bash
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://repos.ros2.org/ubuntu/main $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
```
刷新本地缓存数据表之后再继续操作:
```bash
sudo apt update
```
接着可以选择适合需求的具体组件进行部署;这里我们选取的是包含图形界面应用在内的完整套件:
```bash
sudo apt install ros-galactic-desktop
```
同理也需要调整shell脚本使之生效于每一个新开启的session当中:
```bash
echo "source /opt/ros/galactic/setup.bash" >> ~/.bashrc
source ~/.bashrc
```
测试是否正常工作可通过简单的节点间通信例子实现:
```python
import rclpy
from std_msgs.msg import String
def main(args=None):
rclpy.init(args=args)
node = rclpy.create_node('minimal_publisher')
publisher = node.create_publisher(String, 'topic', 10)
msg = String()
i = 0
def timer_callback():
nonlocal i
msg.data = f'Hello World {i}'
i += 1
node.get_logger().info(f'Publishing: "{msg.data}"')
publisher.publish(msg)
timer_period = 0.5
node.create_timer(timer_period, timer_callback)
try:
rclpy.spin(node)
except KeyboardInterrupt:
pass
node.destroy_node()
rclpy.shutdown()
if __name__ == '__main__':
main()
```
上述代码展示了如何创建一个发布者节点,在指定话题上传递字符串消息.
阅读全文
相关推荐


















