本文主要介绍机器人程序设计入门的安装和配置,并通过简洁的示例演示基于Arduino和ROS构建的机器人物联网系统雏形。Arduino和ROS都支持使用C++进行程序设计。

ROS+Arduino

安装

推荐使用安装环境为windows10,当然也支持MacOS和Linux,为保证通用性,以Windows环境为默认配置。

UNO

1.1 下载Arduino并安装

目前最新版本为arduino-1.8.10-windows,双击下载的安装包(管理员权限)。

同意协议

全选组件

安装目录

如果需要更改,在此步骤进行修改,然后点击安装:

等待安装结束

点击关闭,安装完成

双击桌面Arduino图标,就可以打开IDE进行程序设计了。

Arduino IDE

1.2 安装ROS

机器人操作系统ROS,可以被理解为一个特定的应用于机器人领域的物联网(IoT)系统,很多知识点和技能相似相通,学习并掌握这个工具非常重要。ROS接口丰富,并可与OpenCV,OpenAI等多种第三方开源工具结合,开发出新奇实用的各类机器人。

Windows的ROS1&2需要64位Windows 10桌面版或Windows 10 IoT物联网企业版。

  • 在继续操作之前,请清理并备份c:\opt下的所有现有数据。
  • c:\opt是指定的安装位置。当前未启用重定位。不支持安装在其他位置!!!
  • 请确保C:\ 驱动器上有10 GB的可用空间用于安装和开发。
  • 安装Visual Studio 2019
  • 安装软件包管理器
  • 安装Git:choco upgrade git -y
  • 安装ROS 1 Melodic或ROS 2 Dashing,这里以ROS 1为例。
choco source add -n=ros-win -s="https://roswin.azurewebsites.net/api/v2" --priority=1
choco upgrade ros-melodic-desktop_full -y --execution-timeout=0

创建ROS启动快捷方式:

C:\Windows\System32\cmd.exe /k "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Tools\VsDevCmd.bat" -arch=amd64 -host_arch=amd64 && c:\opt\ros\melodic\\x64\setup.bat

更新ROS:

choco upgrade ros-melodic-desktop_full -y --execution-timeout=0

测试

2.1 Arduino程序

void setup() {// initialize digital pin LED_BUILTIN as an output.pinMode(LED_BUILTIN, OUTPUT);
}// the loop function runs over and over again forever
void loop() {digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)delay(1000);                       // wait for a seconddigitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOWdelay(1000);                       // wait for a second
}

如上所示,是Arduino闪烁13号引脚LED灯程序

Uno

编译并上传到Arduino:

LED13灯闪烁

一切正常!

2.2 ROS

启动roscore,然后启动turtlesim。

rosrun

turtlesim

一切正常!

示例

Arduino的A0/A1引脚分别接滑动变阻器和光敏电阻。使用如下程序,将数值发送到电脑端:

打开Arduino IDE,选择工具->管理库……

rosserial库

然后,打开文件->示例->第三方库示例->Rosserial Arduino Library->ADC:

/* * rosserial ADC Example* * This is a poor man's Oscilloscope.  It does not have the sampling * rate or accuracy of a commerical scope, but it is great to get* an analog value into ROS in a pinch.*/#if (ARDUINO >= 100)#include <Arduino.h>
#else#include <WProgram.h>
#endif
#include <ros.h>
#include <rosserial_arduino/Adc.h>ros::NodeHandle nh;rosserial_arduino::Adc adc_msg;
ros::Publisher p("adc", &adc_msg);void setup()
{ pinMode(13, OUTPUT);nh.initNode();nh.advertise(p);
}//We average the analog reading to elminate some of the noise
int averageAnalog(int pin){int v=0;for(int i=0; i<4; i++) v+= analogRead(pin);return v/4;
}long adc_timer;void loop()
{adc_msg.adc0 = averageAnalog(0);adc_msg.adc1 = averageAnalog(1);adc_msg.adc2 = averageAnalog(2);adc_msg.adc3 = averageAnalog(3);adc_msg.adc4 = averageAnalog(4);adc_msg.adc5 = averageAnalog(5);p.publish(&adc_msg);nh.spinOnce();
}

这段代码的作用是将Arduino全部AD口数据以ROS消息的格式发送到电脑端,编译上传。

这里,已经知道Arduino下载程序端口为COM3,开启roscore后,启动如下命令:

rosrun rosserial_python serial_node.py COM3

开启rosserial_python使用COM3口

使用rostopic list,查看一下:

/adc

将主题/adc数值显示出来:

模拟量数据

使用rqt_plot:

传感器数据的曲线

总结

本文实现在windows10系统下,进行Arduino和ROS编程的安装和配置,并将示例C++程序进行演示,将单片机传感器数据发送到电脑端并用绘图工具制作出数值曲线,更多细节与详细内容,将在后续内容中,逐步介绍。

机器人程序设计入门(C++/Arduino/ROS)(转载2020版)相关推荐

  1. 机器人程序设计——之如何正确入门ROS | 硬创公开课(附视频/PPT)【转】

    转自:http://blog.exbot.net/archives/2966 导语:本期公开课面向想入手ROS却又不知从何下手的小伙伴,为大家梳理好学习思路. ROS和Android一样是开源的,功能 ...

  2. ROS机器人程序设计(原书第2版).

    机器人设计与制作系列 ROS机器人程序设计 (原书第2版) Learning ROS for Robotics Programming,Second Edition 恩里克·费尔南德斯(Enrique ...

  3. ROS机器人程序设计归档材料、大纲、基础turtlesim轨迹和导航测评题目

    ROS实践测试分为: 基础编程测评轨迹类-主要测评编程语言等掌握情况. 案例如: 导航类测评-主要考察导航功能包应用情况. 案例如: ROS1云课-导航实践测评_zhangrelay的博客-CSDN博 ...

  4. ROS机器人程序设计部分大纲-适用于蓝桥云课及ROS1 KINETIC/MELODIC/NOETIC

    ROS机器人程序设计 ROS robot programming 课程编号 16300021 学分 3 开课学期 6 学时 讲课:32学时      实验:16 学时       实践:0学时 课程类 ...

  5. ROS机器人程序设计(原书第2版)补充资料 (零) 源代码、资料和印刷错误修订等 2017年02月22日更新

    ROS机器人程序设计(原书第2版)补充资料 (零) 源代码等 ROS官网 |易科 |虞坤林 |古月居 |ROSClub |创客智造 ROS机器人操作系统在线练习课程正在逐步完善中,目前以ROS官网中文 ...

  6. ROS机器人程序设计(原书第2版)学习镜像分享及使用说明

    2018 ROS Melodic的迷失与救赎::https://blog.csdn.net/column/details/28058.html 2018 GitChat::沉迷机器人操作系统的一个理由 ...

  7. 机器人程序设计课程配套系统镜像使用说明( Ubuntu 14.04.5 + ROS indigo )

    本镜像主要针对机器人程序设计本科课程,供学生课程学习与实践操作使用,基于ROS爱好者和学生使用的反馈意见对之前发布的版本进行修正和补充,在此致谢.更新日期为:2017.03.17,ROS学习推荐网址如 ...

  8. 大学本科《机器人程序设计课程》配套系统镜像使用说明( Ubuntu 14.04.5 + ROS indigo )

    //  原文 http://blog.exbot.net/archives/3001 wiki 教程; http://wiki.ros.org/cn/ROS/Tutorials 大学本科<机器人 ...

  9. ROS机器人程序设计(原书第2版)补充资料 教学大纲

    ROS机器人程序设计(原书第2版) 补充资料 教学大纲 针对该书稍后会补充教学大纲.教案.多媒体课件以及练习题等. <ROS机器人程序设计>课程简介 课程编号:XXXXXX 课程名称:RO ...

最新文章

  1. 生成假人脸、假新闻...AI虚拟世界正形成
  2. 某华为程序员爆料:主动离职,公司竟也给n+1,到手15万,华为真良心!
  3. SpringMVC如何获取请求带来的各种信息 ||如果我们的请求参数是一个POJO(自定义参数类型), SpringMVC会自动的为这个POJO进行赋值
  4. 手把手教你用C#做疫情传播仿真
  5. 国家开放大学2021春1080工程数学(本)题目
  6. Spring Cloud 采用Consul做配置中心
  7. 平板电脑可以插u盘吗_有手机还需要平板电脑吗 酷比魔方iplay30平板电脑评测
  8. python保存rtmp流_ffmpeg 推送、保存rtmp 流命令
  9. dubbo 使用学习五(dubbo开发中使用到的一些服务配置方式)
  10. 被拘捕 353 天后,三星“太子”李在镕被判缓刑当庭获释!
  11. centos7 + python 2.7 + pip + openvswitch 杂项问题
  12. NIS认证管理域中的用户
  13. 马云:大部分失败企业都是因为不够专注
  14. 飞鸽传书2007绿色版,提取、识别不同的重点
  15. 2021系统架构设计师论文真题
  16. 一级域名怎么申请二级域名?
  17. php guzzle,在PHP中实现使用Guzzle执行POST和GET请求
  18. T83310 【音乐会】二重变革
  19. 【Books系列】之第四本书:大冰之《你坏》读书笔记
  20. 汇编语言的寻址方式(针对16位寻址)

热门文章

  1. 融云发布公告:五大高级功能将全面开放
  2. Windows 平台下局域网劫持
  3. dnf剑魂buff等级上限_DNF95全新版本,剑魂之玩法攻略
  4. 为什么要用以太网IO模块替代RS485远程IO模块
  5. python抓取A股市场历史数据(个股、指数)
  6. 判断某整数是否既是5又是7的整数倍
  7. android 大图分块加载,超大图加载
  8. java后台跳转页面实现方式
  9. 十五个闭目养神、调养身心的方法
  10. 【时间序列】时间序列曲线平滑+预测(LSTM)