利用传感器、马达和伺服系统的图书馆,这些都是由hisarc为piwars比赛而设计的
HisarCSPiwars2019的Python项目详细描述
Piwars Turkey 2019:Hisarc提供的分布式机器人套件的Python库
创建这个python库的目的是为了方便hisarc为2019年土耳其pi wars的与会者设计的机器人套件上的软件、传感器和可移动设备之间的理解。
安装
使用以下命令安装库
git clone https://github.com/HisarCS/PiWars2019.git
cd PiWars2019
sudo python setup.py install
用法
importHisarCSPiWars2019
文档
该库包括5个类,现在是:
- optimizedpicam(使用pi相机和opencv进行简化和优化)
- kumanda(使用六轴ps3控制器轻松使用pygame操纵杆类)
- motor control(便于使用带有控制器的覆盆子pi的pololu drv8835电机控制电路)
- 伺服控制(使用GPIO引脚在覆盆子PI上使用伺服电机的简单方法)
- 超声波传感器(便于在覆盆子皮上使用HC-SR04超声波距离传感器)
为了提高性能,有些类包含multithtreading。这可以防止代码的某些部分对代码的其他部分没有影响。多线程特别用于优化dicam(用于抓取和显示帧)、controller(用于连续获取控制器值)、servocontrol(用于防止类中的任何睡眠函数影响主线程)。
优化dicam:
- 方法
updateData()
更新从PI摄像机获取的数据。
startReadingData()
创建一个新线程来调用update data()
,以便在不减慢主线程速度的情况下更新数据。
readData()
以numpy数组的形式返回相机的当前数据。
updateShownFrame()
创建并更新opencv窗口,该窗口显示pi相机看到的图像。"Q"键可用于关闭窗口。
showFrame()
在新线程中调用updateshownframe()
以创建一个可视窗口,而不会减慢主线程的速度。
- 示例用法
fromHisarCSPiWars2019importOptimizedPiCamcamera=OptimizedPiCam()camera.startReadingData()camera.showFrame()
上面的例子创建了一个新的optimizedpicam对象,并使用它显示相机看到的图像,直到按下"q"键。
调用构造函数时,相机的默认分辨率为640x480。如果需要不同的分辨率设置,例如1280x720,请按如下方式设置相机对象:
摄像头=优化的摄像头(分辨率=(1280,720))
请记住,如果需要进一步的视觉处理,则必须使用camera.startreadingdata()
和camera.readdata()
或camera.currentframe
接收数据。camera.current frame
是numpy数组中的当前帧变量,函数camera.readdata()
返回变量camera.currentframe
下面的示例代码将以numpy数组格式从相机中获取帧,将其灰度化,并在主线程中显示帧。
在下面的示例中,灰度帧都被捕获并显示在不同的线程中,而不是在主线程中。强烈建议使用此方法以尽可能提高性能。 刷新在while循环内从控制器获取的值。不建议调用主线程,因为程序将卡在该方法中。 在新线程中调用 将控制器左操纵杆的值返回为两个浮点值,x和y。 将控制器右操纵杆的值返回为两个浮点值,x和y。 返回所有按下按钮的数值数组。 返回所有值控制器的 上面的代码初始化一个kumanda对象,并在按下按钮时从左操纵杆和右操纵杆以及设置字符串中打印值。请记住,在执行主代码时必须调用一次python startsistering(),否则将无法从控制器读取数据。 使用Pololu-DRV8835-RPI库设置电机速度。速度范围是-480到480,其中-480是倒车时的最大速度。电机1和电机2的左右速度取决于它们所处的侧。 根据控制器中操纵杆的值返回马达的速度。x和y是操纵杆的x和y值,t是布尔值,右马达为true,左马达为false。 此代码初始化电机并将其设置为最大速度。 上述代码初始化电机和控制器并进入while循环。在回路中,使用 分别从连续和非连续切换伺服。连续需要提供动态值,而不是在提供的角度之间连续转动伺服。 将伺服旋转到提供的角度(以度为单位)。当伺服设置为不连续时,提供睡眠语句和单独的线程。 在这种情况下,伺服设置为连续。while循环用于将伺服角度持续更改1并设置新角度。 在这种情况下,伺服设置为非连续。while循环用于设置一分钟睡眠的伺服角度 返回超声波传感器测量的距离 上面的代码显示了距离。类的初始值设定项中的整数是它附加到的管脚。 欢迎拉取请求。对于重大更改,请先打开一个问题,讨论要更改的内容。 请确保根据需要更新测试。fromHisarCSPiWars2019importOptmizedPiCamimportcv2camera=OptimizedPiCam()camera.startReadingData()whileTrue:frame=camera.readData()gray=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)cv2.imshow("gray",gray)
git clone https://github.com/HisarCS/PiWars2019.git
cd PiWars2019
sudo python setup.py install
0
库曼达
git clone https://github.com/HisarCS/PiWars2019.git
cd PiWars2019
sudo python setup.py install
1
git clone https://github.com/HisarCS/PiWars2019.git
cd PiWars2019
sudo python setup.py install
2
python refresh()
。使主线程的while循环更快。git clone https://github.com/HisarCS/PiWars2019.git
cd PiWars2019
sudo python setup.py install
3
git clone https://github.com/HisarCS/PiWars2019.git
cd PiWars2019
sudo python setup.py install
4
git clone https://github.com/HisarCS/PiWars2019.git
cd PiWars2019
sudo python setup.py install
5
readData()
(python readLeftValues(),python readRightValues(),python readButtons())
git clone https://github.com/HisarCS/PiWars2019.git
cd PiWars2019
sudo python setup.py install
7
电机控制
git clone https://github.com/HisarCS/PiWars2019.git
cd PiWars2019
sudo python setup.py install
8
git clone https://github.com/HisarCS/PiWars2019.git
cd PiWars2019
sudo python setup.py install
9
importHisarCSPiWars2019
0
importHisarCSPiWars2019
1
controllerdatatomotordata()
函数获取马达的速度值。Y值设置为负值,因为在PS3控制器上,操纵杆上的"前进"会返回负值。伺服控制
importHisarCSPiWars2019
2
importHisarCSPiWars2019
3
importHisarCSPiWars2019
4
importHisarCSPiWars2019
5
超声波传感器
importHisarCSPiWars2019
6
importHisarCSPiWars2019
7
贡献
许可证
推荐PyPI第三方库