必赢手机app下载 / Blog / 必赢手机app下载 / 下接受设想串口进行付出测验
图片 13

下接受设想串口进行付出测验

1.  python 工具

OS: ubuntu 16.04

#coding = utf-8

import pty
import os
import select

def mkpty():
    master1, slave = pty.openpty()
    slaveName1 = os.ttyname(slave)
    master2, slave = pty.openpty()
    slaveName2 = os.ttyname(slave)
    print 'nslave device names: ', slaveName1, slaveName2
    return master1, master2

if __name__ == "__main__":
    master1, master2 = mkpty()
    while True:
        rl, wl, el = select.select([master1, master2], [], [], 1)
        for master in rl:
            data = os.read(master, 128)
            print "read %d data." %len(data)
            if master == master1:
                os.write(master2, data)
            else:
                os.write(master1, data)

ROS:kinetic

运用格局:

1.安装arduino  sudo apt-get install arduino

  运行:在极端里运维“python
mkptych.py&”,那样就能够生成三个基于pty(伪终端卡塔尔国的假造端口对,五个设备名会突显在尖峰里。然后就足以选用那多少个设施名在本机上扩充虚构串口之类的调解。

2.安装ros包  sudo apt-get install ros-kinetic-rosserial-arduino

  关闭:使用完后用ps查看那个python进度的pid号,然后kill掉就能够。

sudo apt-get install
ros-kinetic-rosserial

图片 1

3.设置arduino的SketchBook,将ros_lib弄进来,关于SketchBook的文件目录,在File->Preferences

 

图片 2

2.  Ubuntu下 cutecom
图像分界面串口调节和测量试验工具(参谋:

也能够协和定义该目录.

  (1卡塔尔国终端下载命令:sudo apt-get install cutecom 

cd <sketchbook>/libraries 如果没有libraries目录,自己创建这个目录就可以啦,如果里面已经包含ros_lib目录,请使用rm -rf ros_lib ,防止发生冲突.

rosrun rosserial_arduino make_libraries.py .   用来生成ros_lib库,(注意使用.,当前目录)

  (2卡塔 尔(英语:State of Qatar)通过终端张开软件:sudo
cutecom (要求root权限,不然不可能展开串口卡塔尔国

图片 3

  (3卡塔尔国在 Device 中填入上面生成的虚构串口号  /dev/pts/24   和 
 /dev/pts/25,  Input  中输入文字 ,点击回车发送测量试验

 

图片 4

 由于ubuntu下截图不怎么好用,就用了官方网站的图,道理是大同小异的。能够依赖这一个demo来成立ardunio下的节点,和劳务。

 

有关arduino IDE的串口链接,在 Tools->塞里al
Port下,选材/dev/ttyACM×(× 或者是0,1,2,3…)

3.  python 编写测量检验程序

至于brltty和Arduino之间冲突,但在unbuntu
16.04下没什么影响,在Tools->Serial Port
依旧可以看看/dev/ttyACM*,并且成功烧入。

  (参考  

并不是迟早要卸载brltty,那几个本身觉着要实际试过技巧够如此说.

  (1)1.安装pyserial(安装 serial module)

rosrun rosserial_python serial_node.py /dev/ttyACM* 用来启动rosserial节点。

跑的时候,如果arduino 串口监听,rosserial一起启动,经常导致串口异常,导致串口插拔,才可以重新使用。
这个问题,比较不好理解,linux串口非独占的。目前还在解决中。

由于linux串口的跳动,必须固定串口。

     这里分别python2和 python3:

图片 5

    

 

1 sudo apt install python-pip //python2
2 sudo apt install python3-pip    //python3
lsusb 可以查看当前的usb口。

当然也可以用dmesg

  (2卡塔尔然后经过:

图片 6

1 pip install pyserial    //python2
2 pip3 install pyserial   //python3

能够查阅具体的装置。笔者觉着用arduino 的serial port看起来更合理点。

  (3卡塔 尔(阿拉伯语:قطر‎测验程序

假诺当前arduino的串口好是/dev/ttyACM0,

 1 import serial
 2 from time import sleep
 3 
 4 def recv(serial):
 5     while True:
 6         data = serial.read_all()
 7         if data == '':
 8             continue
 9         else:
10             break
11         sleep(0.02)
12     return data
13 
14 if __name__ == '__main__':
15     serial = serial.Serial('COM5', 9600, timeout=0.5)  #/dev/ttyUSB0
16     if serial.isOpen() :
17         print("open success")
18     else :
19         print("open failed")
20 
21     while True:
22         data =recv(serial)
23         if data != b'' :
24             print("receive : ",data)
25             serial.write(data) #数据写回

行使udevadm info /dev/ttyACM0 查看串口的切实音讯。

 

图片 7

  

那中艺术查看本身认为不是很好,就选择lsusb -vv

  

能够看得更精晓

 

图片 8

参照随笔:  

能够清楚的看见 idVendor 和idpProduct,那多少个是自定义串口的显要参数。

       

 

       

据悉那么些新闻重写串口设施命名准则,选择Linux的udev来自定义法则来治本设施名称

 

(1)

注:解决 ImportError: No module named ‘serial’ 问题

  

具体步骤如下。

/etc/udev/rules.d/10-local.rules

改善这些文件,我意识子虚乌有这里个文件(ubuntu 16.04),那么自个儿 touch
10-local.rules
(其实这几个文件名能够不管定义,但是毕竟不是太精通,所以依据Q&A来做,幸免不可能复现卡塔尔国

随之 依据查询的idVendor 和idpProduct

ACTION=="add", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", SYMLINK+="MyAruduino"添加到10-local.rules文件中
`udevadm info -a -p $(udevadm info -q path -n /dev/ttyACM0) `

接下来重启计算机。

图片 9

但开采Arduino
IDE中显得的依然/dev/ttyACM0,所以本人认为直接运用cutecom串口调节和测验工具来使用.

cutecom -> sudo apt-get install cutecom(安装)

图片 10

Device:直接写/dev/MyArduino ,下拉是无计可施取舍的,

自个儿在Arduino中写serial.write(“ggg”); 在cutecom中曾经突显数据,表达可用。

有有些要证实,当您直连Arduino的烧入线的时候,/dev/ttyACM0,当您用扩充板的是/dev/ttyUSB*.(这么些是有分别的卡塔 尔(阿拉伯语:قطر‎。

 

有关ROSSerial其他的标题,必得在漫漫应用中逐步积存。

 

(2接下来详细的施用ROS塞里al

开启 一个console  : roscore

再重新开起三个console

 图片 11

再开起叁个console :

rostopic pub [topic] [msg_type] [args]

图片 12

当跑意气风发段时间,Serial_node就能够报错(无法合营卡塔 尔(阿拉伯语:قطر‎,关于这么些标题,

本身觉的是本身敞开来Ardunio IDE 的Serial Monitor.所以我关闭Ardunio
IDE的Serial Monitor,开掘并未有现身那么些荒唐。(大约测量检验来半小时卡塔尔国

固然说linux
串口是非垄断(monopoly卡塔 尔(阿拉伯语:قطر‎的,但还要使用恐怕会导致力不能及一齐的标题,那样的话对于调节和测量试验认为很费力。

于是在Arduino
中加来发布代码,在rostopic中看是还是不是接纳科学,以下是Arduino代码:

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

ros::NodeHandle  nh;
std_msgs::String str_msg;
ros::Publisher ServoPub(“ServoPub”, &str_msg);
void servo_cb( const std_msgs::String &cmd_msg)
{
  str_msg =cmd_msg;
  ServoPub.publish(&str_msg);
  nh.spinOnce();
  delay(1);
}

ros::Subscriber<std_msgs::String> sub(“ServoControl”,
servo_cb);

void setup()
{

  nh.initNode();
  nh.advertise(ServoPub);
  nh.subscribe(sub);
}

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

}

继之运营 :  rosrun rosserial_python serial_node.py /dev/MyArduino

接着: rostopic echo ServoPub
随之公布新闻:rostopic pub ServoControl std_msgs/String ‘gg’

下图是担当到的多少:

图片 13

接受到publish 的String消息.

 以上便是rosserial的一些着力使用,假使有新的开始和结果继续纠正。

 

 

 

 

 

 

 

 

 

 

 

 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章

网站地图xml地图