ros_indigo_arduino

2023-12-11 00:58
文章标签 ros arduino indigo

本文主要是介绍ros_indigo_arduino,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

ros_indigo_arduino
1arduino_IDE_setup
下载arduino-1.6.9-linux-64bit
解压
xz -d arduino-XXX-tar.xz
tar -xvf arduino-XXX.tar -C ~/SofeWare/arduino
2Installing
the Sofeware
sudo apt-get install
ros-indigo-rosserial-arduino
sudo apt-get install ros-indigo-rosserial
或源码安装
mkdir -p catkin_ws/src
cd catkin_ws/src
catkin_init_workspace
cd catkin_ws
catkin_make
cd catkin_ws/src
git clone
https://github.com/ros-drivers/rosserial.git
cd catkin_ws
catkin_make
catkin_make install
source install/setup.bash
3Install
ros_lib into the Arduino Environment
cd ~/Arduino/libraries/
rm -rf ros_lib
rosrun rosserial_arduino make_libraries.py .
4、安装完成
点开arduino_IDE在文件->示例出现ros_lib说明安装成功
 
5example
publisher
/*
 * rosserial Publisher Example
 * Prints "hello world!"
 */
 
 #include <ros.h>
 #include <std_msgs/String.h>
 
ros::NodeHandle nh;
 
std_msgs::String str_msg;
ros::Publisher chatter("chatter",
&str_msg);
 
char hello[13] = "hello world!";
 
void setup()
{
  nh.initNode();
  nh.advertise(chatter);
}
 
void loop()
{
  str_msg.data = hello;
  chatter.publish( &str_msg );
  nh.spinOnce();
  delay(1000);
}
 
验证代码上传代码
上传权限
~/SoftWare/arduino/arduino-1.6.9$ ll
/dev/ttyACM0 
crw-rw---- 1 root dialout 166, 0 Aug 14 18:15
/dev/ttyACM0
更改用户组
sudo usermod -a -G dialout shuifu
 
6、演示
roscore
rosrun rosserial_python serial_node.py
/dev/ttyACM0
rostopic echo chatter
7、example subscriber
/*
 * rosserial Subscriber Example
 * Blinks an LED on callback
 */

#include <ros.h>
#include <std_msgs/Empty.h>

ros::NodeHandle nh;

void messageCb( const std_msgs::Empty& toggle_msg){
  digitalWrite(13, HIGH-digitalRead(13));   // blink the led
}

ros::Subscriber<std_msgs::Empty> sub("toggle_led", &messageCb );

void setup()
{
  pinMode(13, OUTPUT);
  nh.initNode();
  nh.subscribe(sub);
}

void loop()
{
  nh.spinOnce();
  delay(1);
}

8、演示

roscore

rosrun rosserial_python serial_node.py /dev/ttyACM0
rostopic pub toggle_led std_msgs/Empty --once


9、Push Button

/* 
 * Button Example for Rosserial
 */

#include <ros.h>
#include <std_msgs/Bool.h>


ros::NodeHandle nh;

std_msgs::Bool pushed_msg;
ros::Publisher pub_button("pushed", &pushed_msg);

const int button_pin = 7;
const int led_pin = 13;

bool last_reading;
long last_debounce_time=0;
long debounce_delay=50;
bool published = true;

void setup()
{
  nh.initNode();
  nh.advertise(pub_button);
  
  //initialize an LED output pin 
  //and a input pin for our push button
  pinMode(led_pin, OUTPUT);
  pinMode(button_pin, INPUT);
  
  //Enable the pullup resistor on the button
  digitalWrite(button_pin, HIGH);
  
  //The button is a normally button
  last_reading = ! digitalRead(button_pin);
 
}

void loop()
{
  
  bool reading = ! digitalRead(button_pin);
  
  if (last_reading!= reading){
      last_debounce_time = millis();
      published = false;
  }
  
  //if the button value has not changed during the debounce delay
  // we know it is stable
  if ( !published && (millis() - last_debounce_time)  > debounce_delay) {
    digitalWrite(led_pin, reading);
    pushed_msg.data = reading;
    pub_button.publish(&pushed_msg);
    published = true;
  }

  last_reading = reading;
  
  nh.spinOnce();
}
10、演示

roscore

rosrun rosserial_python serial_node.py /dev/ttyACM0

rostopic list
/diagnostics
/pusher
/rosout
/rosout_agg

rostopic echo /pusher
data: True
---
data: False
---
data: True
---
data: False


11、Arduino Oscilloscope(示波器)

/*
 * 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.
 */

#include <Arduino.h>
#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 eliminate 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();
}
12、演示

roscore

rqt_plot

rosrun rosserial_python serial_node.py /dev/ttyACM0

rostopic list
/adc
/diagnostics
/rosout
/rosout_agg

rqt_plot adc

13、lightSensor

#include <ros.h>
#include <std_msgs/UInt16.h>

ros::NodeHandle nh;
std_msgs::UInt16 light_msg;
ros::Publisher light("lightSensor", &light_msg);


void setup() {
  // put your setup code here, to run once:
  Serial.begin(57600); //open serial port, set the baud rate to 57600 bps
  nh.initNode();
  nh.advertise(light);

}

void loop() {
  // put your main code here, to run repeatedly:
  int val;
  val = analogRead(0); // connect grayscale sensor to Analog 0
  Serial.println(val, DEC); // print the value to serial
 

  light_msg.data = val;
  light.publish(&light_msg);
  nh.spinOnce();
  delay(100);

}

14、演示

roscore

rosrun rosserial_python serial_node.py /dev/ttyACM0

rostopic echo /lightSensor

15、keyTouch(按键传感器)

#include <Wire.h>
#include <mpr121.h>
#include <ros.h>
#include <std_msgs/Int32.h>

int key = 0;
ros::NodeHandle nh;

std_msgs::Int32 num_msg;
ros::Publisher pub_num("inputNum", &num_msg);

void setup() {
  // put your setup code here, to run once:
  nh.initNode();
  nh.advertise(pub_num);
 
  Serial.begin(19200);
  Wire.begin();
  CapaTouch.begin();

  delay(500);
  Serial.println("START");  

}

void loop() {
  // put your main code here, to run repeatedly:
    
  key = CapaTouch.keyPad();

  if(key == 11)
  {
    Serial.print("key:");  
    Serial.println("*");    
  }
  else if(key == 12)
  {
    Serial.print("key:");  
    Serial.println("#");
  }
  else if(key >= 0)
  {
    Serial.print("key:");  
    Serial.println(key);
  }
  delay(200);

  num_msg.data = key;
  pub_num.publish(&num_msg);
  nh.spinOnce();
  delay(200);

}

16、演示

roscore

rosrun rosserial_python serial_node.py /dev/ttyACM0

rostopic echo /inputNum


这篇关于ros_indigo_arduino的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/478903

相关文章

arduino ide安装详细步骤

​ 大家好,我是程序员小羊! 前言: Arduino IDE 是一个专为编程 Arduino 微控制器设计的集成开发环境,使用起来非常方便。下面将介绍如何在不同平台上安装 Arduino IDE 的详细步骤,包括 Windows、Mac 和 Linux 系统。 一、在 Windows 上安装 Arduino IDE 1. 下载 Arduino IDE 打开 Arduino 官网

ROS - C++实现RosBag包回放/提取

文章目录 1. 回放原理2. 回放/提取 多个话题3. 回放/提取数据包,并实时发布 1. 回放原理 #include <ros/ros.h>#include <rosbag/bag.h>#include <std_msgs/String.h>int main(int argc, char** argv){// 初始化ROS节点ros::init(argc, argv,

ROS - C++实现RosBag包录制

文章目录 1. 录制原理2. 录制多个话题3. 订阅ROS消息,实时录制 1. 录制原理 #include <ros/ros.h>#include <rosbag/bag.h>#include <std_msgs/String.h>int main(int argc, char** argv){// 初始化ROS节点ros::init(argc, argv, "reco

hector_quadrotor编译总结 | ubuntu 16.04 ros-kinetic版本

hector_quadrotor编译总结 | ubuntu 16.04 ros-kinetic版本 基于Ubuntu 16.04 LTS系统所用ROS版本为 Kinetic hector_quadrotor ROS包主要用于四旋翼无人机的建模、控制和仿真。 1.安装依赖库 所需系统及依赖库 Ubuntu 16.04|ros-kinetic|Gazebo|gazebo_ros_pkgs|ge

hector_quadrotor编译总结 | ubuntu 14.04 ros-indigo版本

hector_quadrotor编译总结 | ubuntu 14.04 ros-indigo版本 基于Ubuntu 14.04 LTS系统所用ROS版本为 Indigo hector_quadrotor ROS包主要用于四旋翼无人机的建模、控制和仿真。 备注:两种安装方式可选:install the binary packages | install the source files

Ubuntu20.04+ros-noetic配置Cartographer

一、概述         因为要配置激光SLAM,Cartographer属于激光雷达SLAM 中比较经典的一款,在学习之前先将其在Ubuntu20.04首先配置出来并成功运行demo。 二、具体操作 (一)概述         使用平台是Windows的wsl2上的Ubuntu20.04子系统,双系统与虚拟机的安装原理与这个相同。主要依照的安装操作是官方文档,链接如下所示。 Runni

物联网之ESP32控制舵机、通过网页设置舵机角度、Web服务、舵机原理、接线、Arduino、WiFi、Http

MENU 前言原理硬件电路设计软件程序设计LEDC输出PWM信号使用第三方库控制舵机网页控制舵机 前言 舵机在电子产品中非常常见,比如四足机器人、固定翼航模等都有应用,因此学习舵机对电子制作非常有意义。本文章使用Arguino的PWM对SG90舵机旋转角度控制。 原理 舵机是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。舵机只

Arduino IDE安装

Arduino IDE(集成开发环境)的安装过程是一个相对直观且易于操作的流程,主要步骤包括下载、安装和配置。以下将详细阐述Arduino IDE的安装过程,同时提供一些背景信息和注意事项,确保安装过程顺利进行。 一、Arduino IDE下载 1. 访问Arduino官网 首先,用户需要访问Arduino的官方网站(https://www.arduino.cc),这是获取Arduino I

ROS学习记录-ubuntu系统和ROS的安装

一、ubuntu安装 使用的是ubuntu14.04.4系统,从官网下载,也可以从国内镜像下载。 官网:http://cdimage.ubuntu.com/netboot/14.04/?_ga=1.178505383.2009389272.1483453317 国内镜像 网易:http://mirrors.163.com/ubuntu-releases/14.04/ 厦大:http://

ubuntu14下Arduino IDE无法打开串口的问题

ubuntu版本是14.04 LTS,arduino版本是1.8.1。使用arduino的串口工具时无法打开串口,串口是USB转的,用的cp2102 。 google了一下,发现可能是权限的问题,执行以下语句,即可解决: sudo chown username /dev/ttyUSB0将username改成自己的用户名就行了。