机器人程序设计入门(C++/Arduino/ROS)(转载2020版)
本文主要介绍机器人程序设计入门的安装和配置,并通过简洁的示例演示基于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版)相关推荐
- 机器人程序设计——之如何正确入门ROS | 硬创公开课(附视频/PPT)【转】
转自:http://blog.exbot.net/archives/2966 导语:本期公开课面向想入手ROS却又不知从何下手的小伙伴,为大家梳理好学习思路. ROS和Android一样是开源的,功能 ...
- ROS机器人程序设计(原书第2版).
机器人设计与制作系列 ROS机器人程序设计 (原书第2版) Learning ROS for Robotics Programming,Second Edition 恩里克·费尔南德斯(Enrique ...
- ROS机器人程序设计归档材料、大纲、基础turtlesim轨迹和导航测评题目
ROS实践测试分为: 基础编程测评轨迹类-主要测评编程语言等掌握情况. 案例如: 导航类测评-主要考察导航功能包应用情况. 案例如: ROS1云课-导航实践测评_zhangrelay的博客-CSDN博 ...
- ROS机器人程序设计部分大纲-适用于蓝桥云课及ROS1 KINETIC/MELODIC/NOETIC
ROS机器人程序设计 ROS robot programming 课程编号 16300021 学分 3 开课学期 6 学时 讲课:32学时 实验:16 学时 实践:0学时 课程类 ...
- ROS机器人程序设计(原书第2版)补充资料 (零) 源代码、资料和印刷错误修订等 2017年02月22日更新
ROS机器人程序设计(原书第2版)补充资料 (零) 源代码等 ROS官网 |易科 |虞坤林 |古月居 |ROSClub |创客智造 ROS机器人操作系统在线练习课程正在逐步完善中,目前以ROS官网中文 ...
- ROS机器人程序设计(原书第2版)学习镜像分享及使用说明
2018 ROS Melodic的迷失与救赎::https://blog.csdn.net/column/details/28058.html 2018 GitChat::沉迷机器人操作系统的一个理由 ...
- 机器人程序设计课程配套系统镜像使用说明( Ubuntu 14.04.5 + ROS indigo )
本镜像主要针对机器人程序设计本科课程,供学生课程学习与实践操作使用,基于ROS爱好者和学生使用的反馈意见对之前发布的版本进行修正和补充,在此致谢.更新日期为:2017.03.17,ROS学习推荐网址如 ...
- 大学本科《机器人程序设计课程》配套系统镜像使用说明( Ubuntu 14.04.5 + ROS indigo )
// 原文 http://blog.exbot.net/archives/3001 wiki 教程; http://wiki.ros.org/cn/ROS/Tutorials 大学本科<机器人 ...
- ROS机器人程序设计(原书第2版)补充资料 教学大纲
ROS机器人程序设计(原书第2版) 补充资料 教学大纲 针对该书稍后会补充教学大纲.教案.多媒体课件以及练习题等. <ROS机器人程序设计>课程简介 课程编号:XXXXXX 课程名称:RO ...
最新文章
- 生成假人脸、假新闻...AI虚拟世界正形成
- 某华为程序员爆料:主动离职,公司竟也给n+1,到手15万,华为真良心!
- SpringMVC如何获取请求带来的各种信息 ||如果我们的请求参数是一个POJO(自定义参数类型), SpringMVC会自动的为这个POJO进行赋值
- 手把手教你用C#做疫情传播仿真
- 国家开放大学2021春1080工程数学(本)题目
- Spring Cloud 采用Consul做配置中心
- 平板电脑可以插u盘吗_有手机还需要平板电脑吗 酷比魔方iplay30平板电脑评测
- python保存rtmp流_ffmpeg 推送、保存rtmp 流命令
- dubbo 使用学习五(dubbo开发中使用到的一些服务配置方式)
- 被拘捕 353 天后,三星“太子”李在镕被判缓刑当庭获释!
- centos7 + python 2.7 + pip + openvswitch 杂项问题
- NIS认证管理域中的用户
- 马云:大部分失败企业都是因为不够专注
- 飞鸽传书2007绿色版,提取、识别不同的重点
- 2021系统架构设计师论文真题
- 一级域名怎么申请二级域名?
- php guzzle,在PHP中实现使用Guzzle执行POST和GET请求
- T83310 【音乐会】二重变革
- 【Books系列】之第四本书:大冰之《你坏》读书笔记
- 汇编语言的寻址方式(针对16位寻址)