Sensors & Effectors/Sensors

[ROS Melodic] Load Cell

jstar0525 2021. 8. 25. 16:06
반응형

아두이노를 이용하여 로드셀의 무게 데이터 받고,

rosserial을 이용하여 데이터를 ros에 publish하도록 수정한 코드이다.

 

ROS Package를 만들기 위한 이전의 글

Load cell 소개

https://jstar0525.tistory.com/150

 

[Load Cell][Arduino] Load Cell

이 글은 아래의 링크를 참고로 만들어졌습니다. http://lhdangerous.godohosting.com/wiki/index.php/%EB%A1%9C%EB%93%9C%EC%85%80_HX711_(Load_cell_HX711) 로드셀 HX711 (Load cell HX711) - 도구의인간 메이커..

jstar0525.tistory.com

 

rosserial 설치와 기본적인 예제

https://jstar0525.tistory.com/152

 

[ROS Melodic] ROS에서 Arduino 설치 및 사용

Test Env. HW : jetson AGX Xavier, Arduino Uno SW : jetpack 4.5.1 (Ubuntu 18.04, ROS Melodic, CUDA 10.2, cuDNN 8.0) 1. Install package $ sudo apt-get install ros-melodic-rosserial-arduino $ sudo apt-..

jstar0525.tistory.com

 

ROS 소스 코드

위 두 기초적인 것을 이용하여,

ros에서 load cell의 값을 받을 수 있도록 수정하였다.

https://github.com/jstar0525/loadcell_ros

 

GitHub - jstar0525/loadcell_ros: Using Arduino, communicate with rosserial for loadcell

Using Arduino, communicate with rosserial for loadcell - GitHub - jstar0525/loadcell_ros: Using Arduino, communicate with rosserial for loadcell

github.com

$ git clone https://github.com/jstar0525/loadcell_ros.git

# add library 
	Sketch - Include Library - Add .ZIP Library...
         loadcell_ros/libraries/HX711.zip
#include <ros.h>
#include <std_msgs/Float32.h>
#include "HX711.h"

#define DOUT 3
#define CLK 2

HX711 scale(DOUT, CLK);

float calibration_factor = -136;

ros::NodeHandle nh;

std_msgs::Float32 gram;
ros::Publisher p("gram", &gram);

void setup()
{
  scale.set_scale();
  scale.tare();

  long zero_factor = scale.read_average();

  nh.initNode();
  nh.advertise(p);
}

void loop()
{
  scale.set_scale(calibration_factor);

  gram.data = scale.get_units();
  p.publish( &gram );
  nh.spinOnce();
  delay(1000);

}
반응형