Link ROS发布:云主题可视化和日志记录支持ROS1Melodic和ROS2Dashing 译

随着ROS2的成熟,官方建议将默认分支从ROS1迁移到ROS2,以支持更广泛的开发需求。本文探讨了迁移的最佳时机,介绍了ROS2的LTS版本Foxy Fitzroy,并分享了一个基于ROS2的商用项目LinkROS,它提供了远程查看和控制机器人的工具。此外,还详细讲解了如何使用ROS2与Freedom平台连接,实现数据上传和远程控制。

越来越多的ROS内容在云端混合展开,并全面支持ROS2,关于ROS官网有如下建议:

对于支持ROS1和ROS2的项目,什么时候把GitHub的默认分支从ROS1移到ROS2是合适的。考虑到Noetic即将发布,而且最后一个ROS1版本也即将发布,现在是考虑将所有的默认行为迁移到ROS2的好时机。这既是出于实用的原因,因为大多数新的开发可能都应该在ROS2中进行,同时也是为了突出早期的朋友们在将包迁移到ROS2中所做的伟大工作。将默认的分支作为ROS2的LTS发行版来发布,是一个信号,表明这个项目可以在ROS2中工作。如果很多项目都这样做了,他们会认为这是一个运动,而事实就是如此。

所以建议,对于所有的 ros-* 仓库或更大的项目,与其把默认的分支从 melodic-devel -> noetic-devel 改成 foxy-devel,不如把它们迁移到 foxy-devel。有段时间以来,我已经让我所有的非ros-*版本的项目都这样做了,但现在看来,Foxy似乎是时候把所有的项目都迁移到foxy版本了。

关于命名:

随着《ROS 2 Foxy Fitzroy》的发售日期越来越近,需要开始为《ROS 2 G海龟》的发售名称进行头脑风暴。

现有的ROS 2名称和代号:

  • Ardent Apalone - ardent
  • Bouncy Bolson - bouncy
  • Crystal Clemmys - crystal
  • Dashing Diademata - dashing LTS 推荐学习
  • Eloquent Elusor - eloquent
  • Foxy Fitzroy - foxy LTS 即将发布

现有的ROS 1名称和代号:

  • Boxturtle - boxturtle
  • C Turtle - cturtle
  • Diamondback - diamondback
  • Electric Emys - electric
  • Fuerte - fuerte
  • Groovy Galapagos - groovy
  • Hydro Medusa - hydro
  • Indigo Igloo - indigo LTS
  • Jade Turtle - jade
  • Kinetic Kame - kinetic LTS
  • Lunar Loggerhead - lunar
  • Melodic Morenia - melodic LTS 推荐学习
  • Noetic Ninjemys - noetic LTS 即将发布

 ROS2适合商用,并且很多收费项目非常赞!!!比如:

Link ROS,这是一套可以在世界任何地方通过任何网络连接(防火墙、手机连接、WiFI、登录屏幕...........)查看来自ROS的数据和控制机器人的工具。刚刚在Product Hunt上上线,使用促销代码PRODUCTHUNT免费赠送一个机器人一年。

之前在做大型11DOF清洁服务机器人的时候,在WiFi连接不好的地方工作过。体会那种坐在现场机器人旁边,拿着屏幕、键盘、鼠标插在机器人上,试图重现已经发生过几次的BUG。知道第一手资料是多么难。

  • 获得一个稳定的ssh连接,甚至是设置好它,尤其是在部署地点的现场。
  • 在你的数据包中获取正确的数据,将其共享到另一台计算机上,并将其可视化。
  • 当你的机器人出现问题时,远程控制你的机器人。

见过一次又一次地解决了这些问题,但很少有人能正确地解决。目标是一劳永逸地解决这个问题。支持ROS开箱即用,单线安装。拥有所有的数据。有一个前端应用,但是先做API,所以你可以把你的应用也挂到它上面。

  • 安装文档 - 单行安装
  • 日志设置文档 - 监控教程
  • 带宽调整 - 调整到低速连接或千兆以太网上运行

ROS连接

ROS 1和2需要零代码!

现在,您已经安装了代理,每次运行ROS并开始将数据上传到Freedom时,ROS Shadow节点都会打开。

ROS 1和ROS 2

Freedom同时支持ROS 1和ROS2。在设备上安装代理程序时,在运行安装脚本之前,请打开ADVANCED菜单并选择适当的ROS版本。

如果要使用启动脚本,播放ROS程序包或运行ROS节点,则无需执行其他任何操作。您的数据将自动开始上传到云端!在这里,我们将通过一个最小的示例向您展示更多有关其工作原理的信息。

没有ROS吗?

如果你想测试出ROS的例子,并没有安装ROS(或使用的是Mac),运行以下命令来访问自由泊坞游乐场:docker run -it frdmrobotics/playground bash。您需要apt-get install nano(或您最喜欢的编辑器)。

开始上传数据

Freedom自动旋转一个节点(名为link_ros)以自省使用ROS发布的主题。启动某些内容并开始发布以进行检查-ROS袋也可以工作!

数据将显示在STREAM仪表板的Freedom App中。

ROS2:

# Launch your own nodes and the Agent will automatically
# start a node (link_ros) that listens to what is published.
# Make sure to source your ROS workspace before launching. 

ros2 launch my_package my_launch.launch

ROS2 Bag:

# Not many good quality ROS2 bags exist yet - here we show a
# workaround with a ROS1 bag run in ROS2

# Make sure you have installed ros2 bag packages
apt-get update
sudo apt-get install ros-dashing-ros2bag-* ros-dashing-rosbag2*

# Source ROS1 workspace first
source /opt/ros/melodic/setup.bash

# Now source ROS2 workspace
source /opt/ros/dashing/setup.bash

# Download a ROS bag to play, saving it as rosbag-example.bag
curl -L -o rosbag-example.bag https://bit.ly/freedom-rosbag-example-car

# Play the ROS bag and the Agent will listen to the topics it publishes
ros2 bag play -s rosbag_v2 rosbag-example.bag

发送和接收消息

我们将通过一个示例演示ROS节点如何既可以将消息发送到Freedom,又可以响应从Freedom API发送的命令。

设置一个节点

创建一个名为的文件,demo_node.py并复制下面的代码。

ROS2:

#!/usr/bin/env python

# Please note that there are no references to Freedom in this ROS node.
# The ROS Shadow node will automatically interact with this node and 
# stream the data.

import time
import rclpy
import rclpy.logging
from std_msgs.msg import String
from sensor_msgs.msg import NavSatFix

logger = rclpy.logging.get_logger('node_logger')

# Create a callback to handle this topic
def callback(data):
    logger.info("I heard {}".format(data.data))
    if data.data == "mission":
        logger.info("Running mission...")
    elif data.data == "shutdown":
        logger.info("Received shutdown command")
        rclpy.shutdown()
        
# There is nothing you need to do. The ROS Shadow node        
# will automatically start when this starts
if __name__ == '__main__':
    rclpy.init()

    node = rclpy.create_node('node_name')

    subscription = node.create_subscription(String, 'commands', callback, 10)

    # Create our satellite GPS location topic
    pub_nav = node.create_publisher(NavSatFix, 'location', 10)
    nav_msg = NavSatFix(latitude=37.778454, longitude=-122.389171)

    rclpy.spin(node)

    while rclpy.ok():
        pub_nav.publish(nav_msg)
        time.sleep(1)

    # Destroy the node explicitly
    # (optional - otherwise it will be done automatically
    # when the garbage collector destroys the node object)
    node.destroy_node()
    rclpy.shutdown()

使用以下命令启动节点。

# Source ROS2 workspace
source /opt/ros/dashing/setup.bash

# Execute created script with python3 (mandatory for ROS2)
python3 demo_node.py

您的机器人现在正在报告其位置,同时耐心等待远程命令!您可以在STREAM仪表板的地图上查看其位置。

本示例旨在向您展示使用ROS与Freedom连接的基础知识。通常,您应该构建一个ROS程序包,使用Catkin或Colcon进行编译,并使用ros2 runros2 launch,而不是如上所述地独立运行ROS节点。

测试回调

为了检查回调是否有效,我们将使用Freedom的REST API将命令发送到您的设备。

首先,在Freedom App中选择设备,然后导航至SETTINGS→DEVICE。在“ 接口”部分中,选择ROS(对于ROS1)或ROS2

接下来,如果您尚未登录,请单击此页面右上角的“ 登录”,以便在此示例中,我们可以填充您的令牌,密码,帐户和设备的值。登录后,运行以下命令:

ROS2:

TOKEN="MY_TOKEN"
SECRET="MY_SECRET"
ACCOUNT="MY_ACCOUNT"
DEVICE="MY_DEVICE"
HEADERS="-H content-type:application/json -H mc_token:$TOKEN -H mc_secret:$SECRET"
DATA="[{
    \"platform\": \"ros\", 
    \"utc_time\": `date +%s`,
    \"topic\": \"/commands\",
    \"type\": \"std_msgs/msg/String\",
    \"expiration_secs\": 10,
    \"message\": {\"data\":\"mission\"}
}]"

curl -v $HEADERS -d "$DATA" -X PUT "https://api.freedomrobotics.ai/accounts/$ACCOUNT/devices/$DEVICE/commands"

该消息将在您设置的回调中接收。一旦您的机器人接收到该命令,它将记录日志Running mission...

更改missionshutdown并发送新命令。您的应用程序现在将远程关闭。

成功!您现在知道了如何使用Freedom通过云上传数据并与您的机器人通信。


 

在选择安装合适的 ROS(Robot Operating System)版本时,需要根据具体需求操作系统环境进行合理选择。ROSROS1 ROS2 两个主要版本,它们在架构、功能、适用场景等方面有显著差异。以下是详细的版本选择安装指南。 ### 一、ROS1ROS2 的主要区别 - **架构设计**:ROS1 基于中心化的 Master 节点架构,节点之间的通信依赖于 Master;而 ROS2 采用去中心化的 DDS(Data Distribution Service)架构,节点之间可以直接通信,提升了系统的稳定性扩展性[^2]。 - **实时性与工业应用支持**:ROS2 更加注重工业级应用,支持实时性、安全性、认证与安保等工业场景所需的功能,而 ROS1 在这方面较为欠缺。 - **维护状态**:ROS1 的长期支持版本(如 Noetic)已于 2023 年停止官方维护,而 ROS2 仍在积极开发与维护中,推荐新项目优先使用 ROS2[^2]。 ### 二、ROS 版本与 Ubuntu 系统的兼容性 选择 ROS 版本时,需确保与所使用的 Ubuntu 系统版本兼容: - **ROS1**: - Melodic Morenia:适用于 Ubuntu 18.04 LTS - Noetic Ninjemys:适用于 Ubuntu 20.04 LTS(ROS1 最后一个版本)[^1] - **ROS2**: - Dashing Diademata:适用于 Ubuntu 18.04 LTS(长期支持版) - Foxy Fitzwilliam:适用于 Ubuntu 20.04 LTS(长期支持版) - Humble Hawksbill:适用于 Ubuntu 22.04 LTS(最新长期支持版) - Rolling Ridley:适用于开发测试用途,非长期支持版[^1] ### 三、安装步骤(以 Ubuntu 20.04 为例) #### 1. 添加 ROS 软件源与密钥 ```bash sudo apt update sudo apt install curl gnupg2 lsb-core curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add - sudo sh -c 'echo "deb [arch=$(dpkg --print-architecture)] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" > /etc/apt/sources.list.d/ros2-latest.list' ``` #### 2. 安装 ROS2(以 Foxy 为例) ```bash sudo apt update sudo apt install ros-foxy-desktop ``` #### 3. 初始化 ROS 环境 ```bash source /opt/ros/foxy/setup.bash ``` #### 4. 安装依赖管理工具(如 rosdepc) 若需使用 rosdepc 替代 rosdep 以提高国内安装速度,可执行以下命令: ```bash sudo apt install python3-pip sudo pip3 install rosdepc -i https://pypi.doubanio.com/simple sudo rosdepc init rosdepc update ``` ### 四、ROS1ROS2 共存的环境配置 若需在同一系统中安装 ROS1 ROS2,应避免环境变量冲突。可分别修改其环境脚本: - **ROS1(如 Melodic)** ```bash sudo vim /opt/ros/melodic/share/ros_environment/catkin_env_hook/1.ros_distro.sh ``` 注释以下内容: ```bash #if [ -n "$ROS_DISTRO" -a "$ROS_DISTRO" != "melodic" ]; then # echo "ROS_DISTRO was set to '$ROS_DISTRO' before. Please make sure that the environment does not mix paths from different distributions." #fi #export ROS_DISTRO=melodic ``` - **ROS2(如 Foxy)** ```bash sudo vim /opt/ros/foxy/share/ros_environment/environment/1.ros_distro.sh ``` 同样注释以下内容: ```bash #if [ -n "$ROS_DISTRO" -a "$ROS_DISTRO" != "foxy" ]; then # echo "ROS_DISTRO was set to '$ROS_DISTRO' before. Please make sure that the environment does not mix paths from different distributions." #fi #export ROS_DISTRO=foxy ``` 通过以上步骤,可以实现 ROS1ROS2 的共存,并根据需要切换使用[^3]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值