pathfinder
viewfinder
xmms2
主工作站上的groovy_workspace都没有成功编译过package。运行过hydro版本。
源代码安装版方式。hydro-desktop-full-wet.rosinstall
svn:
http://pi-robot-ros-pkg.googlecode.com/svn/trunk/pi_vision使用的svn版本较低,可svn upgrade升级。
工作副本根目录: /home/ppeix/tutorials/catkin_ws/src/pirobot 要求svn1.8
URL: http://pi-robot-ros-pkg.googlecode.com/svn/trunk
http://isr-uc-ros-pkg.googlecode.com/svn/stacks/serial_communication/trunk
URL: https://github.com/mrjogo/rosserial_avr_tutorial.git
URL: https://svn.openslam.org/data/svn/g2o
git:
https://github.com/rdiankov/openrave.git
https://github.com/yuanboshe/rovio_base.git 将pocketsphinx作用于该package的功能代码丢失了。
https://github.com/WPI-RAIL/rovio.git
https://github.com/LucidOne/Rovio.git
https://github.com/ros/pluginlib.git
https://github.com/pirobot/rbx2.git
rbx2_description/urdf/pi_robot/pi_robot.urdf + <limit effort="1.0" lower="-2.09" upper="2.09" velocity="3.14"/>
https://github.com/pirobot/rbx1.git modified: rbx1_bringup/launch/fake_turtlebot.launch
<node name="arbotix" pkg="arbotix_python" type="arbotix_driver.py" output="screen">
https://github.com/ericperko/uvc_cam.git
src/uvc_cam/uvc_cam.cpp if (!(cap.capabilities & V4L2_CAP_VIDEO_CAPTURE))/*ppeix:check if capture feature is supported*/
https://github.com/ros-drivers/rosserial.git
https://github.com/ros-perception/openslam_gmapping.git
https://github.com/ros-perception/vision_opencv.git
git://git.code.sf.net/p/boa/code
https://github.com/OpenQbo/qbo_cereal_port.git
https://github.com/LucidOne/iheart-ros-pkg.git
https://github.com/ros-planning/moveit_core.git CMakeLists.txt - cmake_modules + # cmake_modules
https://github.com/ros-planning/moveit_ros.git
https://github.com/ros-planning/moveit_setup_assistant.git
删除neo package.因为在image中已经有最新版本的。
删除ekho5.7 解压生成,无版本管理.
删除espeak 使用svn,但版本较老.svn upgrade即可。
工作副本根目录: /home/ppeix/tutorials/catkin_ws/src/espeak-code
URL: svn://svn.code.sf.net/p/espeak/code/trunk
https://github.com/HumaRobotics/ros-indigo-qbo-packages.git
https://github.com/pstemari/RoboBeacon.git
https://github.com/robotictang/eddiebot.git
https://github.com/ros/executive_smach.git
https://github.com/whoenig/crazyflie_ros.git
https://github.com/sigproc/python-sigprocge.git----------------python-sigproc
https://github.com/sigproc/robotic_surgery.git
git://source.ffmpeg.org/ffmpeg.git
https://github.com/jacksonliam/mjpg-streamer.git
https://github.com/dorian3d/DBoW2.git
https://github.com/dorian3d/DLib.git
https://github.com/dorian3d/DLoopDetector.git
https://github.com/Atom-machinerule/OpenQbo.git
navigation https://github.com/ros-planning/navigation.git
https://github.com/ros-drivers/openni2_launch.git
https://github.com/ros-drivers/openni_camera.git
https://github.com/OpenNI/OpenNI2.git
https://github.com/arthurv/OpenTLD.git
https://github.com/ros-drivers/openni2_camera.git
git://git.code.sf.net/p/opensound/git
https://github.com/vanadiumlabs/arbotix.git
https://github.com/OpenQbo/qbo_android_app.git
https://github.com/OpenQbo/qbo_arduqbo.git
https://github.com/OpenQbo/qbo_audio_control
https://github.com/OpenQbo/qbo_random_move.git
https://github.com/OpenQbo/qbo_brain
https://github.com/OpenQbo/qbo_arduino.git
https://github.com/OpenQbo/qbo_listen.git
https://github.com/OpenQbo/qbo_camera.git
https://github.com/OpenQbo/qbo_launchers.git
https://github.com/OpenQbo/qbo_music_player.git
https://github.com/OpenQbo/qbo_talk.git
https://github.com/OpenQbo/qbo_cereal_port.git
https://github.com/OpenQbo/qbo_questions.git
https://github.com/OpenQbo/qbo_self_recognizer.git
https://github.com/OpenQbo/qbo_object_recognition.git
https://github.com/OpenQbo/qbo_stereo_selector.git
https://github.com/OpenQbo/julius_grammar_compiler.git
https://github.com/BlueCop/pygvoicelib.git
https://github.com/sigproc/docker.git
https://github.com/sigproc/qbo_joint_odom.git
https://github.com/BlueCop/qbo_joy_ctrl.git
opencv
git://code.opencv.org/opencv.git
ppeix:DBoW2$ git diff
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7d1f827..a00703c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -23,8 +23,8 @@ if(BUILD_DBoW2)
endif(BUILD_DBoW2)
if(BUILD_Demo)
- add_executable(demo demo/demo.cpp)
- target_link_libraries(demo ${PROJECT_NAME} ${OpenCV_LIBS} ${DLib_LIBS})
+ add_executable(demo1 demo/demo.cpp)
+ target_link_libraries(demo1 ${PROJECT_NAME} ${OpenCV_LIBS} ${DLib_LIBS})
file(COPY demo/images DESTINATION ${CMAKE_BINARY_DIR}/)
endif(BUILD_Demo)
ppeix:DLoopDetector$ git diff
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 32d49d4..df435da 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,8 +1,8 @@
cmake_minimum_required(VERSION 2.8)
project(DLoopDetector)
-option(BUILD_DemoBRIEF "Build demo application with BRIEF features" OFF)
-option(BUILD_DemoSURF "Build demo application with SURF features" OFF)
+option(BUILD_DemoBRIEF "Build demo application with BRIEF features" ON)
+option(BUILD_DemoSURF "Build demo application with SURF features" ON)
set(HDRS
include/DLoopDetector/DLoopDetector.h include/DLoopDetector/TemplatedLoopDetector.h)
ppeix:OpenTLD$ git diff
diff --git a/include/TLD.h b/include/TLD.h
index 2e94e68..b285d2d 100644
--- a/include/TLD.h
+++ b/include/TLD.h
@@ -3,7 +3,7 @@
#include <LKTracker.h>
#include <FerNNClassifier.h>
#include <fstream>
-
+#include <opencv2/legacy/legacy.hpp>
//Bounding Boxes
struct BoundingBox : public cv::Rect {
ppeix:navigation$ ls
amcl dwa_local_planner move_base_msgs README.md
base_local_planner fake_localization move_slow_and_clear robot_pose_ekf
carrot_planner global_planner nav_core rotate_recovery
clear_costmap_recovery map_server navfn voxel_grid
costmap_2d move_base navigation
ppeix:kernel$ git diff
diff --git a/Makefile b/Makefile
index 7df8171..e409301 100644
--- a/Makefile
+++ b/Makefile
@@ -3,7 +3,8 @@
.PHONY: patch linux-config livesuit android
SUDO=sudo
-CROSS_COMPILE=arm-linux-gnueabihf-
+CROSS_COMPILE=arm-none-linux-gnueabi-
+#arm-linux-gnueabihf-
OUTPUT_DIR=$(CURDIR)/output
BUILD_PATH=$(CURDIR)/build
ROOTFS=$(CURDIR)/rootfs.img
@@ -40,7 +41,7 @@ $(U_CONFIG_H): u-boot-sunxi/.git
$(Q)$(MAKE) -C u-boot-sunxi $(UBOOT_CONFIG)_config O=$(U_O_PATH) CROSS_C
u-boot: $(U_CONFIG_H)
- $(Q)$(MAKE) -C u-boot-sunxi all O=$(U_O_PATH) CROSS_COMPILE=$(CROSS_COMP
+ $(Q)$(MAKE) -C u-boot-sunxi $(BOARD} O=$(U_O_PATH) CROSS_COMPILE=$(CROSS
## linux
$(K_DOT_CONFIG): linux-sunxi/.git
视频录制与删除
ppeix:qbo_video_record$ git diff
diff --git a/CMakeLists.txt b/CMakeLists.txt
index cee7228..0dd34c2 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -9,3 +9,4 @@ set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
include(FindPkgConfig)
rosbuild_add_executable(qbo_video_record src/video_record.cpp)
+rosbuild_add_executable(qbo_video_avi src/avi.cpp)
diff --git a/src/video_record.cpp b/src/video_record.cpp
index 82eab40..6d24931 100644
--- a/src/video_record.cpp
+++ b/src/video_record.cpp
@@ -59,7 +59,7 @@ std::string filename;
pid_t pID;
using namespace boost;
-
+int loop = 0;
void recordCallback(const sensor_msgs::Image::ConstPtr& image_ptr)
{
cv_bridge::CvImagePtr cv_ptr;
@@ -72,7 +72,13 @@ void recordCallback(const sensor_msgs::Image::ConstPtr& image_ptr)
ROS_ERROR("cv_bridge exception: %s", e.what());
return;
}
- *writer << cv_ptr->image;
+ if(loop++ < 5)
+ {
+ *writer << cv_ptr->image;
+ cv::imshow("record", cv_ptr->image);
+ cv::waitKey(3);
+ ROS_INFO("record loop = %d\n", loop);
+ }
}
bool startServiceCallBack(qbo_video_record::StartRecord::Request &req,
@@ -144,12 +150,12 @@ void combineAudioVideo()
ROS_INFO("End Combining");
pclose(combProc);
//Removing audio and video files
- FILE* removeProc = popen(removeCommand, "r");
+/* FILE* removeProc = popen(removeCommand, "r");
while (fgets(buffer, 1028, removeProc) != NULL)
{
}
pclose(removeProc);
- rename(tempFile.c_str(), finalFilename.c_str());
+ */ rename(tempFile.c_str(), finalFilename.c_str());
}
bool stopServiceCallBack(qbo_video_record::StopRecord::Request &req,
(END)
ppeix:qbo_face_vision$ git diff .
diff --git a/qbo_face_recognition/src/face_recognizer.cpp b/qbo_face_recognition/src/face_recognizer.cpp
index 18aba3c..0cbbfa9 100644
--- a/qbo_face_recognition/src/face_recognizer.cpp
+++ b/qbo_face_recognition/src/face_recognizer.cpp
@@ -295,7 +295,7 @@ bool FaceRecognizer::storePCA()
return false;
}
- fs << "PCA_mean" << pca_.mean;
+ fs << "PCA_mean" << pca_.mean;/*ppeix: operateor << override*/
fs << "PCA_eigenvalues" << pca_.eigenvalues;
fs << "PCA_eigenvectors" << pca_.eigenvectors;
@@ -320,7 +320,7 @@ bool FaceRecognizer::loadPCA(string path)
if(fs.isOpened())
{
- fs["PCA_mean"] >> pca_.mean;
+ fs["PCA_mean"] >> pca_.mean; /*ppeix: operator >> override*/
fs["PCA_eigenvalues"] >> pca_.eigenvalues;
fs["PCA_eigenvectors"] >> pca_.eigenvectors;
@@ -396,15 +396,15 @@ void FaceRecognizer::trainPCA_SVMClassifiers()
for(unsigned int i = 0; i< persons_.size(); i++) //For each person
{
//Projections matrix
- cv::Mat train_data(0, pca_dimension_, CV_32FC1);
+ cv::Mat train_data(0, pca_dimension_, CV_32FC1);/*ppeix:(row, colum, format, scalar())*/
for(unsigned int j = 0; j<persons_[i].images_.size(); j++) //For each person's image
{
cv::Mat temp, temp2;
- equalizeFace(persons_[i].images_[j]).convertTo(temp, CV_32FC1);
- temp.reshape(1,1).copyTo(temp2);
- cv::Mat coeffs = pca_.project(temp2);
- train_data.push_back(coeffs);
+ equalizeFace(persons_[i].images_[j]).convertTo(temp, CV_32FC1);/*ppeix:mat.convertTo */
+ temp.reshape(1,1).copyTo(temp2);/*ppeix: reshape(int cn, int row) 1 channel.1 row.*/
+ cv::Mat coeffs = pca_.project(temp2);/*ppeix: return matrix from main part of the sample */
+ train_data.push_back(coeffs);/*ppeix: arrange element in coeffs to 1 row and store them to train_data*/
}
//Assign projections to person
@@ -564,15 +564,15 @@ void FaceRecognizer::buildPCA()
// image_size_.width = persons_[0].images_[0].cols;
// image_size_.height = persons_[0].images_[0].cols;
- cv::Mat pca_set(0, image_size_.width*image_size_.height, CV_8UC1);
+ cv::Mat pca_set(0, image_size_.width*image_size_.height, CV_8UC1);/*ppeix: row,column,format*/
//If param for pca_dimension is set
if (private_nh_.hasParam("/qbo_face_recognition/pca_dimension"))
private_nh_.getParam("/qbo_face_recognition/pca_dimension", pca_dimension_);
- for(unsigned int i = 0 ; i<persons_.size();i++)
- for(unsigned int j = 0 ; j<persons_[i].images_.size();j++)
+ for(unsigned int i = 0 ; i<persons_.size();i++)/*ppeix:for each person */
+ for(unsigned int j = 0 ; j<persons_[i].images_.size();j++)/*ppeix:for each image of each person*/
{
cv::Mat temp_mat = equalizeFace(persons_[i].images_[j]);
temp_mat = temp_mat.reshape(1,1);
@@ -587,8 +587,8 @@ void FaceRecognizer::buildPCA()
pca_dimension_ = pca_set.rows -1 ;
else
pca_dimension_ = min(pca_dimension_, pca_set.rows);
-
- pca_(pca_set, cv::Mat(), CV_PCA_DATA_AS_ROW, pca_dimension_);
+/*ppeix: pca_ is a class object. the class implement the operator() override.so it acts as a functor.*/
+ pca_(pca_set, cv::Mat(), CV_PCA_DATA_AS_ROW, pca_dimension_);/*ppeix:perform PCA of pca_set. inputArray, mean, flag, maxComponent*/
stabilizer_states_.clear();
@@ -1511,14 +1511,14 @@ int FaceRecognizer::trainBOW_SVMClassifiers()
cv::ellipse(mask, rot_rect, cv::Scalar(255,255,255), -1);
- descriptor_detector_->detect(temp_img, extracted_keypoints, mask);
+ descriptor_detector_->detect(temp_img, extracted_keypoints, mask);/*ppeix:FeatureDetect::detect, key_points generated.*/
if(extracted_keypoints.size()==0)
continue;
cv::Mat words;
- bowExtractor_->compute(temp_img, extracted_keypoints, words);
+ bowExtractor_->compute(temp_img, extracted_keypoints, words);/*ppeix:BOWImagDescriptorExtrator::compute, output image de
train_data.push_back(words);
@@ -1824,7 +1824,7 @@ int FaceRecognizer::trainVocabulary()
ROS_INFO("\t Generating vocabulary of %d clusters from %d descriptors...", number_of_clusters, num_descriptors);
- //initialize BoW trainer
+ //initialize BoW trainer ppeix:based class to train visual vocabulary using the bag of visual words approach :public BOWTrainer
bowTrainer_ = new cv::BOWKMeansTrainer( number_of_clusters, terminate_criterion, k_means_attempts, k_means_flags);
@@ -1834,7 +1834,7 @@ int FaceRecognizer::trainVocabulary()
bowTrainer_->add(persons_[ob].descriptors_);
}
- //Store vocabulary
+ //Store vocabulary ppeix:cluster train descriptors.return the vocabulary.
persons_vocabulary_ = bowTrainer_->cluster();
//Assign vocabulary to Bow Image Descriptor Extractor
@@ -1910,13 +1910,13 @@ string FaceRecognizer::recognizeBOW_SVM(cv::Mat img)
return returned;
cv::Mat words;
- bowExtractor_->compute(temp_img, extracted_keypoints, words);
+ bowExtractor_->compute(temp_img, extracted_keypoints, words);/*words is output.generate extractor descriptor according to the keypoints */
float confidences[persons_.size()];
//Calculate confidences
for(unsigned int i = 0; i<persons_.size();i++)
- confidences[i] = -1.f *persons_[i].bow_svm_->predict(words, true);
+ confidences[i] = -1.f *persons_[i].bow_svm_->predict(words, true);/*ppeix:words is input sample to predict*/
float max_confidence = 0;
unsigned int max_index = 0;
@@ -2048,7 +2048,7 @@ int FaceRecognizer::addDescriptorsToPerson(cv::Mat image, Person &person)
//Convert image to grayscale
cv::Mat grayscale;
- cv::cvtColor(image, grayscale, CV_RGB2GRAY);
+ cv::cvtColor(image, grayscale, CV_RGB2GRAY);/*ppeix: convert RGB to gray image*/
//Data structures for descriptors extraction
diff --git a/qbo_face_tracking/src/face_detector.cpp b/qbo_face_tracking/src/face_detector.cpp
index 060cb78..b45e90e 100755
--- a/qbo_face_tracking/src/face_detector.cpp
+++ b/qbo_face_tracking/src/face_detector.cpp
@@ -203,7 +203,7 @@ void FaceDetector::onInit()
void FaceDetector::initializeKalmanFilter()
{
- kalman_filter_ = cv::KalmanFilter(4, 4);
+ kalman_filter_ = cv::KalmanFilter(4, 4);/*ppeix:state=4 measurement=4*/
kalman_filter_.transitionMatrix = (cv::Mat_<float>(4,4) << 1,0,1,0,
0,1,0,1,
@@ -347,7 +347,7 @@ void FaceDetector::imageCallback(const sensor_msgs::Image::ConstPtr& image_ptr)
/*
* Kalman filter for Face pos estimation
*/
- kalman_filter_.predict();
+ kalman_filter_.predict();/*ppeix:compute a predict state */
if(face_detected_bool_) //IF face detected, use measured position to update kalman filter
{
if(undetected_count_>=undetected_threshold_)
@@ -374,7 +374,7 @@ void FaceDetector::imageCallback(const sensor_msgs::Image::ConstPtr& image_ptr)
measures.at<float>(2,0) = u_vel;
measures.at<float>(3,0) = v_vel;
- kalman_filter_.correct(measures);
+ kalman_filter_.correct(measures);/*update the predict state from measurement.*/
}
}
else //If face haven't been found, use only Kalman prediction
@@ -400,7 +400,7 @@ void FaceDetector::imageCallback(const sensor_msgs::Image::ConstPtr& image_ptr)
}
else
{
- head_distance=calcDistanceToHead(detected_face_, kalman_filter_);
+ head_distance=calcDistanceToHead(detected_face_, kalman_filter_);/*ppeix: calc according to the kalman_filter result*/
}
if(head_distances_.size()==0)
@@ -426,7 +426,7 @@ void FaceDetector::imageCallback(const sensor_msgs::Image::ConstPtr& image_ptr)
//Update undetected count
- if(!face_detected_bool_)
+ if(!face_detected_bool_)/*ppeix: undetected count increasing*/
{ undetected_count_++;
}
ppeix:qbo_camera$ git diff .
diff --git a/src/stereovision.cpp b/src/stereovision.cpp
index 54d936f..61095ca 100755
--- a/src/stereovision.cpp
+++ b/src/stereovision.cpp
@@ -74,8 +74,8 @@ int StereoVision::rectificarImagen(int iCamera, Mat& i) {
}
if(calibrated) {
Mat imagen;
- i.copyTo(imagen);
- remap(imagen,i,mx,my,INTER_LINEAR);
+ i.copyTo(imagen);/*ppeix:copy to imagen*/
+ remap(imagen,i,mx,my,INTER_LINEAR);/*ppeix:inputArray: imagen outArray:i*/
}
}
@@ -107,7 +107,7 @@ int StereoVision::calibrateStereo(int nx, int ny, int n_boards, float squareSize
calibrateSingleCamara(RIGHT,nx,ny,n_boards,intrinsic_matrix_right_,distorsion_matrix_right_,squareSize);
}
- int salida=-1;
+ int salida=-1;/*ppeix:exit flag*/
do {
cout << endl << "Stereo camera calibration process starts" << endl;
@@ -249,7 +249,7 @@ int StereoVision::calibrateStereo(int nx, int ny, int n_boards, float squareSize
cout << "Calibration result is being showed. If you want to repeat it press 'r'" << endl;
cout << "Press enter to continue" << endl;
- salida=mostrarCamaras();
+ salida=mostrarCamaras();/*ppeix:show the camera*/
if(salida!='r')
{
@@ -351,7 +351,7 @@ int StereoVision::calibrateSingleCamara(int cam,int board_w, int board_h, int n_
cout << "Press a key to capture the image" << endl;
while( successes < n_boards ){
- clickToCaptureSingle(cam,image);
+ clickToCaptureSingle(cam,image);/*ppeix:copy the image from right/left mat assigned at callback.*/
bool result=findChessboardCorners(image,patternSize,temp,CV_CALIB_CB_ADAPTIVE_THRESH+CV_CALIB_CB_FILTER_QUADS);
if( result ) //Si el resultado de la busqueda de esquinas es bueno
@@ -540,7 +540,7 @@ int StereoVision::clickToCaptureSingle(int c,Mat& color) {
right_mutex_.unlock();
}
int c=waitKey(15);
- if(c!=-1)
+ if(c!=-1)/*ppeix:break the loop if any key was pressed. continue to loop when no key was pressed before the delay time elapsed.*/
{
break;
}
@@ -589,7 +589,7 @@ int StereoVision::mostrarCamaras() {
c=waitKey(15);
c=c&0xFF;
- if(c=='\n'||c=='r'||c=='n')
+ if(c=='\n'||c=='r'||c=='n')/*ppeix: break if the key \n or r or n was pressed!*/
break;
}
cvDestroyWindow("Left");
ppeix:perception_pcl$ git diff
diff --git a/pointcloud_to_laserscan/launch/sample_node.launch b/pointcloud_to_laserscan/launch/sample_node.launch
index 9c077fc..387b869 100644
--- a/pointcloud_to_laserscan/launch/sample_node.launch
+++ b/pointcloud_to_laserscan/launch/sample_node.launch
@@ -2,18 +2,11 @@
<launch>
- <arg name="camera" default="camera" />
-
- <!-- start sensor-->
- <include file="$(find openni2_launch)/launch/openni2.launch">
- <arg name="camera" default="$(arg camera)"/>
- </include>
-
<!-- run pointcloud_to_laserscan node -->
<node pkg="pointcloud_to_laserscan" type="pointcloud_to_laserscan_node" name="pointcloud_to_laserscan">
- <remap from="cloud_in" to="$(arg camera)/depth_registered/points_processed"/>
- <remap from="scan" to="$(arg camera)/scan"/>
+ <remap from="cloud_in" to="/distance_sensors_state/floor_sensor"/>
+ <remap from="scan" to="/scan"/>
<rosparam>
target_frame: base_link # Leave empty for no transform
min_height: 0.0
@@ -36,4 +29,4 @@
</node>
-</launch>
\ No newline at end of file
+</launch>
julius-4.0
julius-4.1.5
julius-4.2
julius-4.3.1 Juliusbook-4.1.5.pdf